Browse Source

Fixed Umbala, Umbalian Quests (Fabius' Umbalian language, Turban Thief Quest), Niflheim (fixed some bugs and fixed one big exploit 8)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@20 54d463be-8e91-2dee-dedb-b68131a5f0ec
Lupus 20 years ago
parent
commit
afdd9c05d8
5 changed files with 247 additions and 151 deletions
  1. 8 1
      Changelog.txt
  2. 12 2
      npc/Changelog.txt
  3. 58 35
      npc/cities/niflheim.txt
  4. 68 66
      npc/cities/umbala.txt
  5. 101 47
      npc/quests/quests_umbala.txt

+ 8 - 1
Changelog.txt

@@ -1,6 +1,13 @@
 Date	Added
 Date	Added
-
 11/05
 11/05
+	* Fixed and redo optional Umbalian quests:
+	- Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in
+	  alternative way)
+	- On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest
+	  (For Sphinx Mask)
+	* Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons)
+	  Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every
+	  easy quests with expensive prizes to avoid exploits) [Lupus]
 	* Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady]
 	* Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady]
 	* Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris]
 	* Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris]
 	* Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris]
 	* Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris]

+ 12 - 2
npc/Changelog.txt

@@ -8,8 +8,6 @@ Darkchild
 	* Sage - Done
 	* Sage - Done
 	* Monk Quest - Botting An Acolyte Atm
 	* Monk Quest - Botting An Acolyte Atm
 Lupus
 Lupus
-	* Marriage (Fix, optimization) - 70%
-	* fixing skill quests/ kafras to work with high classes
 	* removing a loop from grandpa_pharmacist.txt (similiar to Juice quest) 0%
 	* removing a loop from grandpa_pharmacist.txt (similiar to Juice quest) 0%
 kobra_k88
 kobra_k88
 	* Optimize WoE
 	* Optimize WoE
@@ -23,6 +21,9 @@ Shinigami
 Mass Zero
 Mass Zero
 	* Novice Training Ground.
 	* Novice Training Ground.
 	* (Probably unofficial) Lou Yang NPC's, mobs, etc...
 	* (Probably unofficial) Lou Yang NPC's, mobs, etc...
+Shadowlady
+	* Marriage (Fix, optimization) ?%
+
 Other Ppl	
 Other Ppl	
 	* Their Work?
 	* Their Work?
 
 
@@ -30,6 +31,15 @@ Other Ppl
 
 
 Date		Added
 Date		Added
 ======
 ======
+11/05
+	* Fixed and redo optional Umbalian quests:
+	- Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in
+	  alternative way)
+	- On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest
+	  (For Sphinx Mask)
+	* Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons)
+	  Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every
+	  easy quests with expensive prizes to avoid exploits) [Lupus]
 11/05
 11/05
 	* Added easter and xmas event npcs.  Added custom blackjack npc.[kobra_k88]
 	* Added easter and xmas event npcs.  Added custom blackjack npc.[kobra_k88]
 11/02
 11/02

+ 58 - 35
npc/cities/niflheim.txt

@@ -4,7 +4,7 @@
 //= Fyrien, Dizzy, PKGINGO
 //= Fyrien, Dizzy, PKGINGO
 //= Official NPCs translated and re-edited by Celest
 //= Official NPCs translated and re-edited by Celest
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.03
+//= 1.05
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= Any eAthena Version; Niflheim Required
 //= Any eAthena Version; Niflheim Required
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -12,9 +12,15 @@
 //= 1.01 Splitted file(guides, shops). Fixed rand() bugs,
 //= 1.01 Splitted file(guides, shops). Fixed rand() bugs,
 //= missing labels bugs, optimization [Lupus]
 //= missing labels bugs, optimization [Lupus]
 //= 1.03 fixed end; -> close;
 //= 1.03 fixed end; -> close;
+//= 1.04-1.05 fixed several bugs with missing CLOSE button, wrong var name
+//=	in Piano Keys quest
+//=     fixed zeny/item, exploit in Sairin, some optimizations [Lupus]
+//=
+//=  TODO: remove any save points from Niflheim (from Kafra)
+//=        remove or commetn Warpers (they make Niflheim Piano Quest meaningless)
 //============================================================ 
 //============================================================ 
 
 
-prontera.gat,164,161,4	script	Traveler	68,{
+prontera.gat,164,161,4	script	Traveler::NifTrav	68,{
 	mes "[Traveler]";
 	mes "[Traveler]";
 	mes "I've come across some strange things in my time. Things you'd have to see to belive. Have you heard of Niffleheim, the City of the Dead?";
 	mes "I've come across some strange things in my time. Things you'd have to see to belive. Have you heard of Niffleheim, the City of the Dead?";
 	next;
 	next;
@@ -27,6 +33,15 @@ M_show:
 	warp "niflheim.gat",202,171;
 	warp "niflheim.gat",202,171;
 	close;
 	close;
 }
 }
+-	script	EDNifTrav	-1,{
+OnInit:
+OnMinute00:
+	disablenpc "NifTrav";
+	end;
+OnMinute56:
+	enablenpc "NifTrav";
+	end;
+}
 
 
 niflheim.gat,52,174,3	script	Kirz	796,{
 niflheim.gat,52,174,3	script	Kirz	796,{
 	mes "[Kirz]";
 	mes "[Kirz]";
@@ -60,6 +75,8 @@ niflheim.gat,184,199,5	script	Little Girl	793,{
 	if(niflheimlost == 1) goto L_foundhim;
 	if(niflheimlost == 1) goto L_foundhim;
 	if(lostgirl == 1) goto L_sure2;
 	if(lostgirl == 1) goto L_sure2;
 	mes "Sir, will you please help me?";
 	mes "Sir, will you please help me?";
+	if(Class==Job_Novice) mes "Oh... you are lost, too..."; //Exploit fix
+	if(Class==Job_Novice) close;
 	next;
 	next;
 	menu "Yes",-, "No",M_no;
 	menu "Yes",-, "No",M_no;
 
 
@@ -85,7 +102,7 @@ L_foundhim:
 	mes "You found him?";
 	mes "You found him?";
 	mes "Oh thank you!";
 	mes "Oh thank you!";
 	mes "Please, take this as a token of my appreciation.";
 	mes "Please, take this as a token of my appreciation.";
-	getitem 642,1;
+	getitem 642,1;//Items: Book of Devil,
 	set niflheimlost2,1;
 	set niflheimlost2,1;
 	close;
 	close;
 L_thanks:
 L_thanks:
@@ -230,7 +247,7 @@ L_book2:
 
 
 L_book3:
 L_book3:
 	set nif_t,0;
 	set nif_t,0;
-	set nif_random1,rand(1,10);
+	set @nif_random1,rand(1,10);
 	mes "[Aesop Bruce]";
 	mes "[Aesop Bruce]";
 	mes "Ahahaha.... i see you are brave!!";
 	mes "Ahahaha.... i see you are brave!!";
 	mes "Start reading your prayersahahahah!!";
 	mes "Start reading your prayersahahahah!!";
@@ -294,7 +311,7 @@ L_score:
 	close;
 	close;
 
 
 L_sucess1:
 L_sucess1:
-	if (nif_random1 == 10) goto L_sucess2;
+	if (@nif_random1 == 10) goto L_sucess2;
 	mes "[Aesop Bruce]";
 	mes "[Aesop Bruce]";
 	mes "Your prayers were correctaaahhhh...";
 	mes "Your prayers were correctaaahhhh...";
 	mes "but your curse still remainsaaahhhh!!";
 	mes "but your curse still remainsaaahhhh!!";
@@ -323,7 +340,7 @@ niflheim.gat,224,243,3	script	Alager	795,{
 	mes "I'm going to eat you...";
 	mes "I'm going to eat you...";
 	next;
 	next;
 	mes "-Chomp bite slurp-";
 	mes "-Chomp bite slurp-";
-	if (nif_quest1 == 1) goto L_end;
+	if (nif_quest1 == 1 || nif_q_done == 1) goto L_end;
 	percentheal -60,0;
 	percentheal -60,0;
 	next;
 	next;
 	mes "[Alager]";
 	mes "[Alager]";
@@ -337,7 +354,7 @@ niflheim.gat,224,243,3	script	Alager	795,{
 	mes "[Alager]";
 	mes "[Alager]";
 	mes "Ah, let me thank you with this,";
 	mes "Ah, let me thank you with this,";
 	mes "I found it on the ground, hoho~";
 	mes "I found it on the ground, hoho~";
-	getitem 7184,1;
+	getitem 7184,1;//Items: Piano Key,
 	set nif_quest1, 1;
 	set nif_quest1, 1;
 	close;
 	close;
 L_end:
 L_end:
@@ -357,18 +374,18 @@ nif_in.gat,105,81,3	script	Grey	794,{
 	mes "^FF0000The beautiful melody surrounding thy soul,^000000";
 	mes "^FF0000The beautiful melody surrounding thy soul,^000000";
 	mes "^FF0000Is the key from Lord Death's wrath.^000000";
 	mes "^FF0000Is the key from Lord Death's wrath.^000000";
 	next;
 	next;
-	if (nif_quest2 == 1) goto L_end;
-	set nif_random,rand(1,4);
+	if (nif_quest2 == 1 || nif_q_done == 1) goto L_end;
+	set @nif_random,rand(1,4);
 	mes "[Grey]";
 	mes "[Grey]";
 	mes "Heh, let me give you a little exam!";
 	mes "Heh, let me give you a little exam!";
-	mes "Repeat line no. " + nif_random + " of the poem";
+	mes "Repeat line no. " + @nif_random + " of the poem";
 	mes "that you have just heard to me!";
 	mes "that you have just heard to me!";
 	next;
 	next;
 	input @inputstr1$;
 	input @inputstr1$;
-	if (nif_random == 2) goto L_RAN_2;
-	if (nif_random == 3) goto L_RAN_3;
-	if (nif_random == 4) goto L_RAN_4;
-	//if (nif_random == 1) goto L_RAN_1;	
+	if (@nif_random == 2) goto L_RAN_2;
+	if (@nif_random == 3) goto L_RAN_3;
+	if (@nif_random == 4) goto L_RAN_4;
+	//if (@nif_random == 1) goto L_RAN_1;	
 	L_RAN_1:
 	L_RAN_1:
 		set @str1$,"When the sun sets in the western hills,";
 		set @str1$,"When the sun sets in the western hills,";
 		goto L_RAN_B;
 		goto L_RAN_B;
@@ -400,7 +417,7 @@ nif_in.gat,105,81,3	script	Grey	794,{
 		mes "I am Grey, a wandering poet of yore,";
 		mes "I am Grey, a wandering poet of yore,";
 		mes "you are the best audience i have had so far,";
 		mes "you are the best audience i have had so far,";
 		mes "here, take this as a reward.";
 		mes "here, take this as a reward.";
-		getitem 7184,1;
+		getitem 7184,1;//Items: Piano Key,
 		set nif_quest2, 1;
 		set nif_quest2, 1;
 		next;
 		next;
 		mes "[Grey]";
 		mes "[Grey]";
@@ -423,25 +440,24 @@ nif_in.gat,31,20,3	script	Kurtz	794,{
 	mes "Business nowadays is really bad...";
 	mes "Business nowadays is really bad...";
 	mes "Back when i used to be alive,";
 	mes "Back when i used to be alive,";
 	mes "my business was this bad too~!";
 	mes "my business was this bad too~!";
-	if (nif_quest3 == 1) goto L_end;
+	if (nif_quest3 == 1 || nif_q_done == 1) close;
 	next;
 	next;
 	mes "[Kurtz]";
 	mes "[Kurtz]";
 	mes "Hey! You there! Dump this for me";
 	mes "Hey! You there! Dump this for me";
 	mes "on the way out will you!";
 	mes "on the way out will you!";
-	getitem 7184,1;
+	getitem 7184,1;//Items: Piano Key,
 	set nif_quest3, 1;
 	set nif_quest3, 1;
 	next;
 	next;
 	mes "[Kurtz]";
 	mes "[Kurtz]";
 	mes "Why is business so bad lately...";
 	mes "Why is business so bad lately...";
 	mes "(mumble mumble)";
 	mes "(mumble mumble)";
 	close;
 	close;
-L_end:
-	close;
 }
 }
 
 
 niflheim.gat,169,71,5	script	#1	111,2,2{
 niflheim.gat,169,71,5	script	#1	111,2,2{
-	if (nif_quest4 == 1) goto L_end;
-L_key1:
+	if (nif_q_done == 1) end;
+	if (nif_quest4 == 1) end;
+
 	mes "- In the nearby tombs -";
 	mes "- In the nearby tombs -";
 	mes "- you see something -";
 	mes "- you see something -";
 	mes "- half buried in the ground -";
 	mes "- half buried in the ground -";
@@ -450,17 +466,17 @@ L_key1:
 	next;
 	next;
 	mes "- Pick it up? -";
 	mes "- Pick it up? -";
 	menu "Yes",-,"No",L_end;
 	menu "Yes",-,"No",L_end;
-	getitem 7184,1;
+	getitem 7184,1;//Items: Piano Key,
 	set nif_quest4, 1;
 	set nif_quest4, 1;
 L_end:
 L_end:
 	close;
 	close;
 }
 }
 
 
 niflheim.gat,208,103,5	script	#2	111,2,2{
 niflheim.gat,208,103,5	script	#2	111,2,2{
+	if (nif_q_done == 1) end;
 	if (nif_quest5 == 1) goto L_key2;
 	if (nif_quest5 == 1) goto L_key2;
-	if (nif_quest5 >= 2) goto L_end;
+	if (nif_quest5 >= 2) end;
 
 
-L_key1:
 	mes "- In the nearby tombs -";
 	mes "- In the nearby tombs -";
 	mes "- you see something -";
 	mes "- you see something -";
 	mes "- half buried in the ground -";
 	mes "- half buried in the ground -";
@@ -469,8 +485,8 @@ L_key1:
 	next;
 	next;
 	mes "- Pick it up? -";
 	mes "- Pick it up? -";
 	menu "Yes",-,"No",L_end;
 	menu "Yes",-,"No",L_end;
-	getitem 7184,1;
-	set nif_piano, 1;
+	getitem 7184,1;//Items: Piano Key,
+	set nif_quest5, 1;
 	close;
 	close;
 L_key2:
 L_key2:
 	mes "- In the hole you have dug -";
 	mes "- In the hole you have dug -";
@@ -480,21 +496,30 @@ L_key2:
 	next;
 	next;
 	mes "- Pick it up? -";
 	mes "- Pick it up? -";
 	menu "Yes",-,"No",L_end;
 	menu "Yes",-,"No",L_end;
-	getitem 7184,1;
-	set nif_piano, 2;
+	getitem 7184,1;//Items: Piano Key,
+	set nif_quest5, 2;
 L_end:
 L_end:
 	close;
 	close;
 }
 }
 
 
 nif_in.gat,115,181,5	script	#4	111,3,3{
 nif_in.gat,115,181,5	script	#4	111,3,3{
 	mes "- You see a huge old piano -";
 	mes "- You see a huge old piano -";
-	mes "- with a few keys missing  -";
-	if ((nif_quest6 < 1) && (countitem(7184) > 5)) goto L_event;
+	if if (nif_q_done==0) mes "- with a few keys missing  -";
+	if if (nif_q_done==1) mes "- with one key missing -";
+	if (nif_q_done==0 && countitem(7184) > 5) goto L_event;//Items: Piano Key,
 	close;
 	close;
 
 
 L_event:
 L_event:
-	delitem 7184,6;
-	set nif_quest6, 1;
+	delitem 7184,6;//Items: Piano Key,
+	set nif_quest_done, 1;
+	//clear auxiliary vars now
+	set nif_quest1, 0;
+	set nif_quest2, 0;
+	set nif_quest3, 0;
+	set nif_quest4, 0;
+	set nif_quest5, 0;
+	set nif_random,0; //clear garbage
+	set nif_random1,0; //clear garbage
 	mes "- You slide the 6 piano keys one -";
 	mes "- You slide the 6 piano keys one -";
 	mes "- by one into the missing slots  -";
 	mes "- by one into the missing slots  -";
 	mes "- on the piano, but you realise  -";
 	mes "- on the piano, but you realise  -";
@@ -504,10 +529,8 @@ L_event:
 }
 }
 
 
 nif_in.gat,118,151,5	script	#5	111,3,3{
 nif_in.gat,118,151,5	script	#5	111,3,3{
-	if (nif_quest6 == 1) goto L_event;
-	end;
+	if (nif_q_done != 1) end;
 
 
-L_event:
 	mes "- The very moment the long shadow -";
 	mes "- The very moment the long shadow -";
 	mes "- of your body falls on the piano -";
 	mes "- of your body falls on the piano -";
 	next;
 	next;

+ 68 - 66
npc/cities/umbala.txt

@@ -249,11 +249,11 @@ cmd_in01.gat,164,115,1	script	Niles	731,{
 //Trade money for meat
 //Trade money for meat
 umbala.gat,70,106,3	script	Utan Child#1	781,{
 umbala.gat,70,106,3	script	Utan Child#1	781,{
 if(event_umbala < 3) goto LumWord;
 if(event_umbala < 3) goto LumWord;
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "Hello!  I'm a member of";
 	mes "Hello!  I'm a member of";
 	mes "the Utan tribe.";
 	mes "the Utan tribe.";
 	next;
 	next;
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "My name is Hatan!  Nice to";
 	mes "My name is Hatan!  Nice to";
 	mes "meet you.";
 	mes "meet you.";
 	emotion 18;
 	emotion 18;
@@ -283,7 +283,7 @@ if(event_umbala < 3) goto LumWord;
 		mes "Yay!!";
 		mes "Yay!!";
 		mes "You're the best!!";
 		mes "You're the best!!";
 		set Zeny,Zeny-1000;
 		set Zeny,Zeny-1000;
-		getitem 517,1;
+		getitem 517,1;//Items: Meat,
 		emotion 19;
 		emotion 19;
 		next;
 		next;
 		mes "[Hatan]";
 		mes "[Hatan]";
@@ -304,11 +304,11 @@ if(event_umbala < 3) goto LumWord;
 		close;
 		close;
 
 
 LumWord:
 LumWord:
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "Umba!";
 	mes "Umba!";
 	mes "Umbaluwababawamuba.";
 	mes "Umbaluwababawamuba.";
 	next;
 	next;
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "Umba!  Umbaumba!";
 	mes "Umba!  Umbaumba!";
 	mes "Umbabama Hatan baba.";
 	mes "Umbabama Hatan baba.";
 	emotion 18;
 	emotion 18;
@@ -340,7 +340,7 @@ LumWord:
 		mes "Um!-babaumba-baumba-.";
 		mes "Um!-babaumba-baumba-.";
 		mes "Umba-umba-Umbabawamamaba!";
 		mes "Umba-umba-Umbabawamamaba!";
 		set Zeny,Zeny-1000;
 		set Zeny,Zeny-1000;
-		getitem 517,1;
+		getitem 517,1;//Items: Meat,
 		emotion 19;
 		emotion 19;
 		next;
 		next;
 		mes "[Hatan]";
 		mes "[Hatan]";
@@ -371,15 +371,15 @@ if(event_umbala < 3) goto LumWord;
 	mes "...Gimme meat!";
 	mes "...Gimme meat!";
 	next;
 	next;
 	menu "Sure",-,"No way!",L2;
 	menu "Sure",-,"No way!",L2;
-	if(countitem(517) < 1) goto LError;
+	if(countitem(517) < 1) goto LError;//Items: Meat,
 		mes "[Kotan]";
 		mes "[Kotan]";
 		mes "Hey, thanks!";
 		mes "Hey, thanks!";
 		mes "Take these!";
 		mes "Take these!";
 		emotion 10;
 		emotion 10;
-		delitem 517,1;
-		getitem 909,2;
-		getitem 914,2;
-		getitem 705,2;
+		delitem 517,1;//Items: Meat,
+		getitem 909,2;//Items: Jellopy,
+		getitem 914,2;//Items: Fluff,
+		getitem 705,2;//Items: Clover,
 		close;
 		close;
 	L2:
 	L2:
 		mes "[Kotan]";
 		mes "[Kotan]";
@@ -396,7 +396,7 @@ LError:
 	emotion 6;
 	emotion 6;
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "....";
 	mes "....";
 	mes "....";
 	mes "....";
 	mes "...Umbaba!";
 	mes "...Umbaba!";
@@ -404,25 +404,25 @@ LumWord:
 	emotion 11;
 	emotion 11;
 	next;
 	next;
 	menu "Umba",-,"Umbabu",Lu2;
 	menu "Umba",-,"Umbabu",Lu2;
-	if(countitem(517) < 1) goto LuError;
-		mes "[�H�H�H]";
+	if(countitem(517) < 1) goto LuError;//Items: Meat,
+		mes "[???]";
 		mes "Umbaumbaumbababa.";
 		mes "Umbaumbaumbababa.";
 		mes "Umbababauma.";
 		mes "Umbababauma.";
 		emotion 10;
 		emotion 10;
-		delitem 517,1;
-		getitem 909,2;
-		getitem 914,2;
-		getitem 705,2;
+		delitem 517,1;//Items: Meat,
+		getitem 909,2;//Items: Jellopy,
+		getitem 914,2;//Items: Fluff,
+		getitem 705,2;//Items: Clover,
 		close;
 		close;
 	Lu2:
 	Lu2:
-		mes "[�H�H�H]";
+		mes "[???]";
 		mes "....";
 		mes "....";
 		mes "......Unguba!";
 		mes "......Unguba!";
 		mes "....Umbababa.";
 		mes "....Umbababa.";
 		emotion 28;
 		emotion 28;
 		close;
 		close;
 LuError:
 LuError:
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "Umbawamufumabababa!";
 	mes "Umbawamufumabababa!";
 	mes "Umbabababaumbaumbu!";
 	mes "Umbabababaumbaumbu!";
 	emotion 6;
 	emotion 6;
@@ -457,12 +457,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 			goto LRight;
 			goto LRight;
 		L1_2:
 		L1_2:
 			//Blue
 			//Blue
-			if(countitem(717) < 1) goto L1_2_e;
+			if(countitem(717) < 1) goto L1_2_e;//Items: Blue Gemstone,
 				mes "^3355FFYou inserted a Blue Gemstone into the";
 				mes "^3355FFYou inserted a Blue Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 717,1;
-				getitem 717,1;
+				delitem 717,1;//Items: Blue Gemstone,
+				getitem 717,1;//Items: Blue Gemstone,
 				set @ryumon,1;
 				set @ryumon,1;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -470,12 +470,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 				goto LRight;
 				goto LRight;
 		L1_3:
 		L1_3:
 			//Yellow
 			//Yellow
-			if(countitem(715) < 1) goto L1_3_e;
+			if(countitem(715) < 1) goto L1_3_e;//Items: Yellow Gemstone,
 				mes "^3355FFYou inserted a Yellow Gemstone into the";
 				mes "^3355FFYou inserted a Yellow Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 715,1;
-				getitem 715,1;
+				delitem 715,1;//Items: Yellow Gemstone,
+				getitem 715,1;//Items: Yellow Gemstone,
 				set @ryumon,2;
 				set @ryumon,2;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -483,12 +483,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 				goto LRight;
 				goto LRight;
 		L1_4:
 		L1_4:
 			//Red
 			//Red
-			if(countitem(716) < 1) goto L1_4_e;
+			if(countitem(716) < 1) goto L1_4_e;//Items: Red Gemstone,
 				mes "^3355FFYou inserted a Red Gemstone into the";
 				mes "^3355FFYou inserted a Red Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 716,1;
-				getitem 716,1;
+				delitem 716,1;//Items: Red Gemstone,
+				getitem 716,1;//Items: Red Gemstone,
 				set @ryumon,3;
 				set @ryumon,3;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -516,12 +516,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 			goto Lfin;
 			goto Lfin;
 		L2_2:
 		L2_2:
 			//Blue
 			//Blue
-			if(countitem(717) < 1) goto L2_2_e;
+			if(countitem(717) < 1) goto L2_2_e;//Items: Blue Gemstone,
 				mes "^3355FFYou inserted a Blue Gemstone into the";
 				mes "^3355FFYou inserted a Blue Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 717,1;
-				getitem 717,1;
+				delitem 717,1;//Items: Blue Gemstone,
+				getitem 717,1;//Items: Blue Gemstone,
 				set @ryumon,@ryumon+10;
 				set @ryumon,@ryumon+10;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -529,12 +529,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 				goto Lfin;
 				goto Lfin;
 		L2_3:
 		L2_3:
 			//Yellow
 			//Yellow
-			if(countitem(715) < 1) goto L2_3_e;
+			if(countitem(715) < 1) goto L2_3_e;//Items: Yellow Gemstone,
 				mes "^3355FFYou inserted a Yellow Gemstone into the";
 				mes "^3355FFYou inserted a Yellow Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 715,1;
-				getitem 715,1;
+				delitem 715,1;//Items: Yellow Gemstone,
+				getitem 715,1;//Items: Yellow Gemstone,
 				set @ryumon,@ryumon+20;
 				set @ryumon,@ryumon+20;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -542,12 +542,12 @@ umbala.gat,221,193,1	script	 #Skeletal Gate	111,{
 				goto Lfin;
 				goto Lfin;
 		L2_4:
 		L2_4:
 			//Red
 			//Red
-			if(countitem(716) < 1) goto L2_4_e;
+			if(countitem(716) < 1) goto L2_4_e;//Items: Red Gemstone,
 				mes "^3355FFYou inserted a Red Gemstone into the";
 				mes "^3355FFYou inserted a Red Gemstone into the";
 				mes "left socket.^000000";
 				mes "left socket.^000000";
 				next;
 				next;
-				delitem 716,1;
-				getitem 716,1;
+				delitem 716,1;//Items: Red Gemstone,
+				getitem 716,1;//Items: Red Gemstone,
 				set @ryumon,@ryumon+30;
 				set @ryumon,@ryumon+30;
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "^3355FFA rolling sound can be heard, and";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
 				mes "the gemstone comes out of the skeleton's                                 mouth.^000000";
@@ -702,6 +702,8 @@ LStart2:
 		mes "because sometimes by hiding your";
 		mes "because sometimes by hiding your";
 		mes "face, you can express more geniune";
 		mes "face, you can express more geniune";
 		mes "feelings.";
 		mes "feelings.";
+	//Activate Sphinx Mask Quest (optional)
+		set mask_q,1;
 		next;
 		next;
 		mes "[Karukatan]";
 		mes "[Karukatan]";
 		mes "Over time, the mask itself";
 		mes "Over time, the mask itself";
@@ -763,7 +765,7 @@ LStart2:
 		mes "your memories.";
 		mes "your memories.";
 		close;
 		close;
 LStart3:
 LStart3:
-	if ((countitem(7151)>=10) && (countitem(7111)>=5) && (countitem(1024)>=1) && (countitem(916)>=1)) goto Lchkok;
+	if ((countitem(7151)>=10) && (countitem(7111)>=5) && (countitem(1024)>=1) && (countitem(916)>=1)) goto Lchkok;//Items: Oiled Paper, String Paper, Squid Ink, Feather of Birds,
 	mes "[Karukatan]";
 	mes "[Karukatan]";
 	mes "It seems you've not yet prepared the";
 	mes "It seems you've not yet prepared the";
 	mes "proper items.  Did you forget what";
 	mes "proper items.  Did you forget what";
@@ -802,10 +804,10 @@ Lchkok:
 	mes "Try talking to others in the Utan";
 	mes "Try talking to others in the Utan";
 	mes "tribe.  They'll warm up to your quickly";
 	mes "tribe.  They'll warm up to your quickly";
 	mes "now that you speak the language.";
 	mes "now that you speak the language.";
-	delitem 7151,10;
-	delitem 7111,5;
-	delitem 1024,1;
-	delitem 916,1;
+	delitem 7151,10;//Items: Oiled Paper,
+	delitem 7111,5;//Items: String Paper,
+	delitem 1024,1;//Items: Squid Ink,
+	delitem 916,1;//Items: Feather of Birds,
 	set event_umbala,3;
 	set event_umbala,3;
 	next;
 	next;
 	mes "[Karukatan]";
 	mes "[Karukatan]";
@@ -854,7 +856,7 @@ LStart5:
 	set event_umbala,5;
 	set event_umbala,5;
 	close;
 	close;
 LStart6:
 LStart6:
-	if(countitem(2278) > 0) goto Lsmileok;
+	if(countitem(2278) > 0) goto Lsmileok;//Items: Mr. Smile,
 	mes "[Karukatan]";
 	mes "[Karukatan]";
 	mes "Did you find the ^3377FFSmile Mask^000000 yet?";
 	mes "Did you find the ^3377FFSmile Mask^000000 yet?";
 	mes "In order to let you see the shaman,";
 	mes "In order to let you see the shaman,";
@@ -869,7 +871,7 @@ Lsmileok:
 	mes "on just once, but I promised to";
 	mes "on just once, but I promised to";
 	mes "give this to Putsuchiritan as";
 	mes "give this to Putsuchiritan as";
 	mes "a gift.";
 	mes "a gift.";
-	delitem 2278,1;
+	delitem 2278,1;//Items: Mr. Smile,
 	set event_umbala,6;
 	set event_umbala,6;
 	next;
 	next;
 	mes "[Karukatan]";
 	mes "[Karukatan]";
@@ -968,25 +970,25 @@ L1:
 	next;
 	next;
 	menu "Earth",L1_1,"Water",L1_2,"Fire",L1_3,"Wind",L1_4;
 	menu "Earth",L1_1,"Water",L1_2,"Fire",L1_3,"Wind",L1_4;
 	L1_1:
 	L1_1:
-		if (countitem(947)<15) goto L1_1e;
+		if (countitem(947)<15) goto L1_1e;//Items: Horn,
 		set @umchange[1],947;
 		set @umchange[1],947;
 		set @umchange[2],15;
 		set @umchange[2],15;
 		set @umchange[3],993;
 		set @umchange[3],993;
 		goto L1_ketugou;
 		goto L1_ketugou;
 	L1_2:
 	L1_2:
-		if (countitem(946)<20) goto L1_2e;
+		if (countitem(946)<20) goto L1_2e;//Items: Snails Shell,
 		set @umchange[1],946;
 		set @umchange[1],946;
 		set @umchange[2],20;
 		set @umchange[2],20;
 		set @umchange[3],991;
 		set @umchange[3],991;
 		goto L1_ketugou;
 		goto L1_ketugou;
 	L1_3:
 	L1_3:
-		if (countitem(904)<20) goto L1_3e;
+		if (countitem(904)<20) goto L1_3e;//Items: Scorpion Tail,
 		set @umchange[1],904;
 		set @umchange[1],904;
 		set @umchange[2],20;
 		set @umchange[2],20;
 		set @umchange[3],990;
 		set @umchange[3],990;
 		goto L1_ketugou;
 		goto L1_ketugou;
 	L1_4:
 	L1_4:
-		if (countitem(1013)<25) goto L1_4e;
+		if (countitem(1013)<25) goto L1_4e;//Items: Rainbow Shell,
 		set @umchange[1],1013;
 		set @umchange[1],1013;
 		set @umchange[2],25;
 		set @umchange[2],25;
 		set @umchange[3],992;
 		set @umchange[3],992;
@@ -1087,25 +1089,25 @@ L2:
 	next;
 	next;
 	menu "Earth",L2_1,"Water",L2_2,"Fire",L2_3,"Wind",L2_4;
 	menu "Earth",L2_1,"Water",L2_2,"Fire",L2_3,"Wind",L2_4;
 	L2_1:
 	L2_1:
-	if (countitem(997)<1) goto L2_1e;
+	if (countitem(997)<1) goto L2_1e;//Items: Great Nature,
 		set @umchange[1],997;
 		set @umchange[1],997;
 		set @umchange[2],1;
 		set @umchange[2],1;
 		set @umchange[3],993;
 		set @umchange[3],993;
 		goto L2_bunkai;
 		goto L2_bunkai;
 	L2_2:
 	L2_2:
-	if (countitem(995)<1) goto L2_2e;
+	if (countitem(995)<1) goto L2_2e;//Items: Mystic Frozen,
 		set @umchange[1],995;
 		set @umchange[1],995;
 		set @umchange[2],1;
 		set @umchange[2],1;
 		set @umchange[3],991;
 		set @umchange[3],991;
 		goto L2_bunkai;
 		goto L2_bunkai;
 	L2_3:
 	L2_3:
-	if (countitem(994)<1) goto L2_3e;
+	if (countitem(994)<1) goto L2_3e;//Items: Flame Heart,
 		set @umchange[1],994;
 		set @umchange[1],994;
 		set @umchange[2],1;
 		set @umchange[2],1;
 		set @umchange[3],990;
 		set @umchange[3],990;
 		goto L2_bunkai;
 		goto L2_bunkai;
 	L2_4:
 	L2_4:
-	if (countitem(996)<1) goto L2_4e;
+	if (countitem(996)<1) goto L2_4e;//Items: Rough Wind,
 		set @umchange[1],996;
 		set @umchange[1],996;
 		set @umchange[2],1;
 		set @umchange[2],1;
 		set @umchange[3],992;
 		set @umchange[3],992;
@@ -1200,7 +1202,7 @@ L2_empty:
 	mes "so that the ritual can be completed.";
 	mes "so that the ritual can be completed.";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H�H]";
+	mes "[?????]";
 	mes "Umbaumbaumbaba Utan Umbaba";
 	mes "Umbaumbaumbaba Utan Umbaba";
 	mes "Umbaumbaumbafumbabauma...";
 	mes "Umbaumbaumbafumbabauma...";
 	mes "Umbabaumbaumbabaumbabaumba";
 	mes "Umbabaumbaumbabaumbabaumba";
@@ -1327,7 +1329,7 @@ umbala.gat,140,157,6	script	Utan Tribe Young Adult#1	785,{
 	mes "as an adult in the Utan tribe.";
 	mes "as an adult in the Utan tribe.";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H�H]";
+	mes "[?????]";
 	mes "Umbaumbafumba.";
 	mes "Umbaumbafumba.";
 	mes "Uwambaunbaumbabaufumba";
 	mes "Uwambaunbaumbabaufumba";
 	mes "Umbababaumbaumba.";
 	mes "Umbababaumbaumba.";
@@ -1344,7 +1346,7 @@ umbala.gat,146,157,4	script	Utan Young Adult#2	786,{
 	mes "gather for a large feast.";
 	mes "gather for a large feast.";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumbaumbabaumbaba.";
 	mes "Umbaumbaumbabaumbaba.";
 	mes "Umbaumbabaumbababaumufumuba.";
 	mes "Umbaumbabaumbababaumufumuba.";
 	close;
 	close;
@@ -1361,7 +1363,7 @@ umbala.gat,149,165,4	script	Utan Young Adult#3	781,{
 	mes "member of the Utan tribe.";
 	mes "member of the Utan tribe.";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H�H�H]";
+	mes "[??????]";
 	mes "Umbaumbaumbababa.";
 	mes "Umbaumbaumbababa.";
 	mes "Umbaumbaumumbabaumfumuba.";
 	mes "Umbaumbaumumbabaumfumuba.";
 	mes "Umbaumbaumumubafumba.";
 	mes "Umbaumbaumumubafumba.";
@@ -1385,12 +1387,12 @@ umbala.gat,92,159,4	script	Hartan	785,{
 	mes "Mmmmmmm...Chocolate...";
 	mes "Mmmmmmm...Chocolate...";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";
 	next;
 	next;
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumbabaungaha.";
 	mes "Umbaumbabaungaha.";
 	emotion 28;
 	emotion 28;
 	close;
 	close;
@@ -1419,17 +1421,17 @@ umbala.gat,194,104,4	script	Utan Tribe Child#2	787,{
 		mes "they'll have to recognize me as an adult!";
 		mes "they'll have to recognize me as an adult!";
 		close;
 		close;
 LumWord:
 LumWord:
-	mes "[�H�H�H]";
+	mes "[???]";
 	mes "Umbaumbababaumfumuba.";
 	mes "Umbaumbababaumfumuba.";
 	mes "Umbababaumbabaumbaumba.";
 	mes "Umbababaumbabaumbaumba.";
 	next;
 	next;
 	menu "Um...yes?",-,"Nope...",Lu2;
 	menu "Um...yes?",-,"Nope...",Lu2;
-		mes "[�H�H�H]";
+		mes "[???]";
 		mes "Umbaumbaumbababa.";
 		mes "Umbaumbaumbababa.";
 		mes "Umbaumbaumubaba.";
 		mes "Umbaumbaumubaba.";
 		close;
 		close;
 	Lu2:
 	Lu2:
-		mes "[�H�H�H]";
+		mes "[???]";
 		mes "Umbaumbaumuam.";
 		mes "Umbaumbaumuam.";
 		mes "Umbaumbaumbaba.";
 		mes "Umbaumbaumbaba.";
 		mes "Umbaumfumababaumu.";
 		mes "Umbaumfumababaumu.";
@@ -1448,7 +1450,7 @@ umbala.gat,193,208,6	script	Utan Child#3	789,{
 	mes "boys will be boys, don't you think?";
 	mes "boys will be boys, don't you think?";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumbababa.";
 	mes "Umbaumbababa.";
 	mes "Umbamubafumabaumumbabamua";
 	mes "Umbamubafumabaumumbabamua";
 	mes "Umumbababaumbafuma.";
 	mes "Umumbababaumbafuma.";
@@ -1479,14 +1481,14 @@ umbala.gat,139,205,4	script	Utan Tribe Young Adult#5	785,{
 	mes "If you linger underwater, you might die...";
 	mes "If you linger underwater, you might die...";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumba!";
 	mes "Umbaumba!";
 	mes "Umbaumbabababaumumba.";
 	mes "Umbaumbabababaumumba.";
 	mes "Babaum Utan Umbaumbaba";
 	mes "Babaum Utan Umbaumbaba";
 	mes "Umbababafumu.";
 	mes "Umbababafumu.";
 	mes "Umfumubabaumbaumbaumbaba.";
 	mes "Umfumubabaumbaumbaumbaba.";
 	next;
 	next;
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbafumumababaumba.";
 	mes "Umbafumumababaumba.";
 	mes "Umbabatanumbaumba.";
 	mes "Umbabatanumbaumba.";
 	mes "Umumu.  Umbaumbaumbaum.";
 	mes "Umumu.  Umbaumbaumbaum.";
@@ -1549,7 +1551,7 @@ um_in.gat,158,71,3	script	Utan Tribesman	787,{
 	mes "not visit it if you're over that way?";
 	mes "not visit it if you're over that way?";
 	close;
 	close;
 LumWord:
 LumWord:
-	mes "[�H�H�H�H]";
+	mes "[????]";
 	mes "Umbaumbaumbabaumba!";
 	mes "Umbaumbaumbabaumba!";
 	mes "Umbaumbaumbababaumba";
 	mes "Umbaumbaumbababaumba";
 	mes "Umbaumbaumba";
 	mes "Umbaumbaumba";

+ 101 - 47
npc/quests/quests_umbala.txt

@@ -3,16 +3,22 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= sabernet09 & eAthena Team
 //= sabernet09 & eAthena Team
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.5
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= eAthena 7.15 +
 //= eAthena 7.15 +
 //===== Description: ========================================= 
 //===== Description: ========================================= 
 //= Umbalian Language Quest, +
 //= Umbalian Language Quest, +
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= fixed by x[tsk], Lupus, PoW
 //= fixed by x[tsk], Lupus, PoW
-//= location of the "card removing old lady" should be revised
 //= Quest completion is now registered
 //= Quest completion is now registered
 //= 1.1 fixed Poporing Egg ID -> Poring Egg, fixed condition
 //= 1.1 fixed Poporing Egg ID -> Poring Egg, fixed condition
+//= 1.2-1.5 fixed some Umbalian Language quests:
+//= 	- Now if Umbalian Chief tell u about meaning of masks
+//=	  you can interact with activated Sphinx Mask Quest
+//=	- with Wise Man Fabius you can learn Umbalian Language
+//=	  in alternative way.
+//= TODO: Put WEREWOLF in Umbla - and add some conditions to
+//=	  the Dungeon entrance quest
 //============================================================ 
 //============================================================ 
 
 
 
 
@@ -20,8 +26,8 @@
 //===========================================================================
 //===========================================================================
 //this quest is related to Umbalian Chief
 //this quest is related to Umbalian Chief
 morocc.gat,140,156,5	script	Turban Thief	58,{
 morocc.gat,140,156,5	script	Turban Thief	58,{
+	if(mask_q == 0) goto AWAY;
 	if(mask_q == 2) goto NoBus;
 	if(mask_q == 2) goto NoBus;
-	if(umb_quest != 1) goto AWAY;
 	mes "[Turban Thief]";
 	mes "[Turban Thief]";
 	mes "E'llo mah frien, would I interesst tu with this rare mask?  Its value I assure you is real mah frien.  Tis manific!";
 	mes "E'llo mah frien, would I interesst tu with this rare mask?  Its value I assure you is real mah frien.  Tis manific!";
 	next;
 	next;
@@ -34,7 +40,7 @@ morocc.gat,140,156,5	script	Turban Thief	58,{
 		mes "[Turban Thief]";
 		mes "[Turban Thief]";
 		mes "O ho ho, its a deal then!";
 		mes "O ho ho, its a deal then!";
 		set zeny,zeny-1000000;
 		set zeny,zeny-1000000;
-		getitem 7114,1;
+		getitem 7114,1;//Items: Sphinx Mask,
 		set mask_q,2;
 		set mask_q,2;
 		close;
 		close;
 	NoGo:
 	NoGo:
@@ -48,7 +54,7 @@ morocc.gat,140,156,5	script	Turban Thief	58,{
 			mes "[Turban Thief]";
 			mes "[Turban Thief]";
 			mes "It is a done deal, no refunds!";
 			mes "It is a done deal, no refunds!";
 			set zeny,zeny-750000;
 			set zeny,zeny-750000;
-			getitem 7114,1;
+			getitem 7114,1;//Items: Sphinx Mask,
 			set mask_q,2;
 			set mask_q,2;
 			close;
 			close;
 		NoGoB:
 		NoGoB:
@@ -61,7 +67,7 @@ morocc.gat,140,156,5	script	Turban Thief	58,{
 				mes "[Turban Thief]";
 				mes "[Turban Thief]";
 				mes "Alright, here you go then...";
 				mes "Alright, here you go then...";
 				set zeny,zeny-500000;
 				set zeny,zeny-500000;
-				getitem 7114,1;
+				getitem 7114,1;//Items: Sphinx Mask,
 				set mask_q,2;
 				set mask_q,2;
 				close;
 				close;
 			NoGoC:
 			NoGoC:
@@ -84,126 +90,156 @@ morocc.gat,140,156,5	script	Turban Thief	58,{
 }
 }
 		
 		
 //======================================================================================//
 //======================================================================================//
-//				Umbala Language Quest
+//				Umbala Language Quest (optional)
 //======================================================================================//
 //======================================================================================//
 
 
 prontera.gat,145,290,5	script	Mason	742,{
 prontera.gat,145,290,5	script	Mason	742,{
-	if(ulquest == 1) goto Got;
 	mes "[Mason]";
 	mes "[Mason]";
+	if(umb_lang==0) goto L_NOT_GOT_QUEST;
+	if(umb_lang==2 || umb_mason==1) goto L_AGAIN;
+
 	mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?";
 	mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?";
-	menu "Yes",-, "No",No;
+	menu "Yes",-, "No",M_NO;
 
 
 	mes "Oooo, could you please tell me where she's at? I'd be really appreciative.";
 	mes "Oooo, could you please tell me where she's at? I'd be really appreciative.";
-	menu "Swordsman Association",-, "Sanctuary",Boo1,"Prontera Chivalry",Boo2,"Armory",Boo3,"Kit Shop",Boo4,"Inn",Boo5,"Trading Post",Yay,"Library",Boo6,"Job Agency",Boo7,"Prontera Castle",Boo8,"City Hall",Boo9;
+	menu "Swordsman Association",-, "Sanctuary",M_Boo1,"Prontera Chivalry",M_Boo2,"Trading Post",M_Boo3,"Kit Shop",M_Boo4,"Inn",M_Boo5,"Armory",M_DONE,"Library",M_Boo6,"Job Agency",M_Boo7,"Prontera Castle",M_Boo8,"City Hall",M_Boo9;
 
 
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Hmm... I dunno why she would be there... guess I'll take a look.";
 	mes "Hmm... I dunno why she would be there... guess I'll take a look.";
 	close;
 	close;
-Boo1:
+M_Boo1:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Wow I never knew she was a religious person... I'll see to it thanks.";
 	mes "Wow I never knew she was a religious person... I'll see to it thanks.";
 	close;
 	close;
-Boo2:
+M_Boo2:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Hmm.... are you sure about that?";
 	mes "Hmm.... are you sure about that?";
 	close;
 	close;
-Boo3:
+M_Boo3:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Why would she need to go there? I think you might be mistaken.";
 	mes "Why would she need to go there? I think you might be mistaken.";
 	close;
 	close;
-Boo4:
+M_Boo4:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now.";
 	mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now.";
 	close;
 	close;
-Boo5:
+M_Boo5:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "I don't think she needs to be there, she LIVES here in Prontera.";
 	mes "I don't think she needs to be there, she LIVES here in Prontera.";
 	close;
 	close;
-Boo6:
+M_Boo6:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways.";
 	mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways.";
 	close;
 	close;
-Boo7:
+M_Boo7:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Job Agency?  I don't think so.  Don't lead me all around Prontera please! She's already a teacher here.";
 	mes "Job Agency?  I don't think so.  Don't lead me all around Prontera please! She's already a teacher here.";
 	close;
 	close;
-Boo8:
+M_Boo8:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing.";
 	mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing.";
 	close;
 	close;
-Boo9:
+M_Boo9:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later.";
 	mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later.";
 	close;
 	close;
-Yay:
+M_DONE:
 	next;
 	next;
 	mes "[Mason]";
 	mes "[Mason]";
 	mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help.";
 	mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help.";
-	getitem 7117,1;
-	set ulquest,1;
+	getitem 7117,1;//Items: Torn Spell Book,
+	set umb_mason,1;
 	close;
 	close;
-Got:
-	mes "[Mason]";
+
+L_AGAIN:
+	emotion 15;
 	mes "Yay, I found her! Thank you very much for you help!";
 	mes "Yay, I found her! Thank you very much for you help!";
 	close;
 	close;
 
 
-No:
-	mes "[Mason]";
-	mes "Oh..Ok..Thanks anyways";
+L_NOT_GOT_QUEST:
+	mes "Hi! I came here to Prontera in search of an old lady... But...";
+	close;
+M_NO:
+	mes "Oh.. Ok.. Thanks anyways.";
 	close;
 	close;
 }
 }
 
 
-aldebaran.gat,153,212,1	script	[Mojo]	740,{
+aldebaran.gat,153,212,1	script	Mojo	740,{
 	mes "[Mojo]";
 	mes "[Mojo]";
-	mes "Oh no!  I lost my teacher's ^FF0000old magic book^000000!  What am I going to do... those dumb Bathory...";
+	if(umb_lang!=1) goto L_NOT_GOT_QUEST;
+	mes "Oh no!  I lost my teacher's ^FF0000old magic book^000000!";
+	mes "What am I going to do... those dumb Bathory...";
+	if(umb_lang==1) set umb_mojo,1;
+	close;
+L_NOT_GOT_QUEST:
+	emotion 1;
+	mes "I lost my teacher's book!  What am I going to do...";
 	close;
 	close;
 }
 }
 
 
 amatsu.gat,267,189,4	script	Marie	744,{
 amatsu.gat,267,189,4	script	Marie	744,{
-	if(countitem(9001)>0 && countitem(643)>0) goto ForMe;
 	mes "[Marie]";
 	mes "[Marie]";
+	if(umb_lang==0) goto L_NOT_GOT_QUEST;
+	if(umb_lang==2 || umb_marie==1) goto L_AGAIN;
+	if(countitem(9001)>0 && countitem(643)>0) goto L_DONE;//Items: Poring Egg, Pet Incubator,
 	mes "Hello, is there something you need?";
 	mes "Hello, is there something you need?";
-	menu "No nothing at all.",Noth,"Your teacher sent me.",-;
+	menu "No nothing at all.",M_NO,"Your teacher sent me.",-;
 
 
 	mes "What does he want from me?";
 	mes "What does he want from me?";
+	emotion 1;
 	next;
 	next;
 	mes "[Marie]";
 	mes "[Marie]";
 	mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!";
 	mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!";
 	close;
 	close;
-Noth:
+
+L_NOT_GOT_QUEST:
+	emotion 1;
+	mes "Hi! What do you want from me?";
+	close;
+M_NO:
 	mes "Hrrmm okay? Cya then..";
 	mes "Hrrmm okay? Cya then..";
 	close;
 	close;
-ForMe:
-	mes "[Marie]";
+L_DONE:
 	mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?";
 	mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?";
-	menu "Yep",-, "Sorry no",DOH;
+	menu "Yep!",-, "Sorry, no.",M_DOH;
 
 
 	mes "Yatta!  Here's a lil something in return.";
 	mes "Yatta!  Here's a lil something in return.";
-	getitem 7118,1;
-	delitem 9001,1;
-	delitem 643,1;
+	getitem 7118,1;//Items: Torn Scroll,
+	delitem 9001,1;//Items: Poring Egg,
+	delitem 643,1;//Items: Pet Incubator,
+	set umb_marie,1; //got Torn Scroll
 	close;
 	close;
-DOH:
+M_DOH:
 	mes "O pooo... sigh...";
 	mes "O pooo... sigh...";
 	close;
 	close;
+L_AGAIN:
+	emotion 15;
+	mes "Yay! I love Porings!";
+	close;
 }
 }
 
 
 yuno.gat,157,366,2	script	Wise Man Fabius	743,{
 yuno.gat,157,366,2	script	Wise Man Fabius	743,{
-	if((countitem(1006) < 1) || (countitem(7118) < 1) || (countitem(7117) < 1)) goto FIN;
-	delitem 1006,1;	
-	delitem 7118,1;	
-	delitem 7117,1;
 	mes "[Fabius]";
 	mes "[Fabius]";
+	if (event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled
+	if (umb_lang<2) goto L_QUEST;
+	mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!";
+	close;
+L_QUEST:
+	if((countitem(1006) < 1) || (countitem(7118) < 1) || (countitem(7117) < 1)) goto L_DONE;//Items: Old Magic Book, Torn Scroll, Torn Spell Book,
+	delitem 1006,1;	//Items: Old Magic Book,
+	delitem 7118,1;	//Items: Torn Scroll,
+	delitem 7117,1;//Items: Torn Spell Book,
+	emotion 15;
 	mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril.";
 	mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril.";
 	next;
 	next;
 	mes "[Fabius]";
 	mes "[Fabius]";
@@ -217,18 +253,36 @@ yuno.gat,157,366,2	script	Wise Man Fabius	743,{
 	next;
 	next;
 	mes "^0000FF Learned the language of Umbalians! ^000000";
 	mes "^0000FF Learned the language of Umbalians! ^000000";
 	set umb_lang,2;
 	set umb_lang,2;
+	//clear subquests
+	set umb_marie,0;
+	set umb_mason,0;
+	set umb_mojo,0;
+	//make you understand Umbalian people
+	//it's an alternative way to learn Umbalian Language
+	if(event_umbala < 3) set event_umbala,3;
 	close;
 	close;
-FIN:
-	mes "[Fabius]";
+L_DONE:
+	set umb_lang,1; //got Quest
 	mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you.";
 	mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you.";
 	next;
 	next;
 	mes "[Fabius]";
 	mes "[Fabius]";
-	mes "From what I know, they're in different seperate towns making something out of themselves. Oh yeah, tell them I sent you, their names are Marie, Mason, and Mojo";
+	mes "From what I know, they're in different seperate towns making something out of themselves.";
+	if (umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET;
+	if (umb_marie==1) mes "Oh... You found Marie in Amatsu.";
+	if (umb_mojo==1) mes "You saw Mojo in Aldebaran?";
+	if (umb_mason==1) mes "So... Mason's in Prontera now... Well...";
+	if (umb_marie==0) mes "I wonder where is our sea girl Marie?";
+	if (umb_mojo==0) mes "Mojo should be somewhere near water...";
+	if (umb_mason==0) mes "Where'd Mason go then...";
+	mes "Oh yeah, tell them I sent you";
+	close;
+L_NOT_MET:
+	mes "Oh yeah, tell them I sent you, their names are Marie, Mason and Mojo.";
 	close;
 	close;
 }
 }
 
 
 //========================================================================================================================\\
 //========================================================================================================================\\
-//                       Litle Quest NPC to enter the dungeon
+//                       Little Quest NPC to enter the dungeon
 //                                Fixed by Akaru
 //                                Fixed by Akaru
 //========================================================================================================================\\
 //========================================================================================================================\\
 umbala.gat,65,253,4	script	Tree Guardian	752,{ 
 umbala.gat,65,253,4	script	Tree Guardian	752,{