فهرست منبع

Global_Function updates.
* Added the following functions:
- "F_GetPlural" (returns plural of noun) / "F_InsertPlural" (returns plural if arg != 1) [credits: EnglishClub for formation rules]
- "F_InsertArticle" (returns 'a' or 'an' preceding word)
- "F_InsertComma" (formats number with commas)
- "F_GetNumSuffix" (formats number with '-st', '-nd', '-rd', or '-th' suffix)
* Added and removed new functions where necessary. (incomplete)
* Added new types to "F_GetArmorType" function, and weapons will now pass to "F_GetWeaponType".
* Reformatted comments.

Other changes:
* Removed some garbage text from scripts.
* Slight edits to custom warper script.

Signed-off-by: Euphy <euphy.raliel@rathena.org>

Euphy 11 سال پیش
والد
کامیت
97687ca10c
52فایلهای تغییر یافته به همراه627 افزوده شده و 569 حذف شده
  1. 1 1
      npc/airports/airships.txt
  2. 4 4
      npc/cities/comodo.txt
  3. 13 13
      npc/cities/lighthalzen.txt
  4. 0 36
      npc/custom/battleground/bg_common.txt
  5. 14 15
      npc/custom/etc/bank.txt
  6. 9 18
      npc/custom/quests/hunting_missions.txt
  7. 4 11
      npc/custom/quests/quest_shop.txt
  8. 123 118
      npc/custom/warper.txt
  9. 3 3
      npc/guild2/agit_main_se.txt
  10. 2 10
      npc/instances/EndlessTower.txt
  11. 1 1
      npc/jobs/1-1e/taekwon.txt
  12. 5 5
      npc/jobs/2-1e/StarGladiator.txt
  13. 1 1
      npc/jobs/2-2/alchemist.txt
  14. 2 2
      npc/merchants/ammo_boxes.txt
  15. 4 4
      npc/merchants/ammo_dealer.txt
  16. 187 63
      npc/other/Global_Functions.txt
  17. 9 5
      npc/other/card_trader.txt
  18. 10 14
      npc/other/hugel_bingo.txt
  19. 1 1
      npc/other/marriage.txt
  20. 3 4
      npc/other/mercenary_rent.txt
  21. 1 1
      npc/other/monster_race.txt
  22. 2 2
      npc/pre-re/guides/guides_comodo.txt
  23. 2 2
      npc/quests/bunnyband.txt
  24. 9 9
      npc/quests/dandelion_request.txt
  25. 21 21
      npc/quests/doomed_swords.txt
  26. 2 2
      npc/quests/doomed_swords_quest.txt
  27. 1 1
      npc/quests/partyrelay.txt
  28. 26 26
      npc/quests/quests_comodo.txt
  29. 57 57
      npc/quests/quests_hugel.txt
  30. 15 15
      npc/quests/quests_nameless.txt
  31. 1 1
      npc/quests/quests_veins.txt
  32. 18 18
      npc/quests/skills/alchemist_skills.txt
  33. 8 8
      npc/quests/skills/assassin_skills.txt
  34. 7 7
      npc/quests/skills/bard_skills.txt
  35. 6 6
      npc/quests/skills/blacksmith_skills.txt
  36. 2 2
      npc/quests/skills/crusader_skills.txt
  37. 2 2
      npc/quests/skills/dancer_skills.txt
  38. 4 4
      npc/quests/skills/knight_skills.txt
  39. 5 5
      npc/quests/skills/monk_skills.txt
  40. 3 3
      npc/quests/skills/priest_skills.txt
  41. 8 8
      npc/quests/skills/rogue_skills.txt
  42. 3 3
      npc/quests/skills/sage_skills.txt
  43. 3 3
      npc/quests/skills/wizard_skills.txt
  44. 3 3
      npc/quests/thana_quest.txt
  45. 1 1
      npc/re/cities/brasilis.txt
  46. 3 10
      npc/re/guild/invest_main.txt
  47. 11 11
      npc/re/jobs/novice/supernovice_ex.txt
  48. 1 3
      npc/re/merchants/3rd_trader.txt
  49. 2 2
      npc/re/merchants/blessed_refiner.txt
  50. 1 1
      npc/re/merchants/enchan_upg.txt
  51. 2 2
      npc/re/quests/magic_books.txt
  52. 1 1
      npc/re/quests/quests_eclage.txt

+ 1 - 1
npc/airports/airships.txt

@@ -387,7 +387,7 @@ airplane,221,158,2	script	Pilot#airplane	852,{
 		mes "......";
 		mes "No one ever really";
 		mes "comes into this room.";
-		mes "And the captain IS a reindeer.^FFFFFF ^000000 I could just strip to my boxers.";
+		mes "And the captain IS a reindeer. I could just strip to my boxers.";
 		next;
 		emotion e_omg;
 		mes "[Pilot]";

+ 4 - 4
npc/cities/comodo.txt

@@ -132,7 +132,7 @@ cmd_in02,172,105,4	script	G . J#cmd	86,{
 	mes "it seems smarter to make";
 	mes "money in other ways. Sure,";
 	mes "working hard is no fun, but";
-	mes "there are ways to use your^FFFFFF ^000000 money to make more of it, right?";
+	mes "there are ways to use your money to make more of it, right?";
 	next;
 	mes "[G . J]";
 	mes "There's also the matter of";
@@ -217,7 +217,7 @@ cmd_in02,57,62,4	script	Moo#cmd	109,{
 		mes "manager of the Comodo";
 		mes "Casino. We pride ourselves in";
 		mes "serving all of our customers'";
-		mes "needs, doing all we can so that^FFFFFF ^000000 your visit here is unforgettable.";
+		mes "needs, doing all we can so that your visit here is unforgettable.";
 		next;
 		mes "[Moo]";
 		mes "All of our guests can enjoy";
@@ -251,7 +251,7 @@ cmd_fild04,188,74,4	script	Zyosegirl#cmd	93,{
 	mes "It's nice to be able to work";
 	mes "outdoors, but someday, I want";
 	mes "to save enough money and move";
-	mes "to the city. I'm still young, you^FFFFFF ^000000 know, and I've got dreams";
+	mes "to the city. I'm still young, you know, and I've got dreams";
 	mes "that I want to fulfill~";
 	close;
 }
@@ -408,7 +408,7 @@ moc_fild12,35,303,4	script	Serutero#cmd	59,{
 	mes "guardian of the roads that";
 	mes "lead to Sandaruman Fortress.";
 	mes "If you really want to go there,";
-	mes "I'll permit you to continue, but^FFFFFF ^000000 you must beware of its dangers...";
+	mes "I'll permit you to continue, but you must beware of its dangers...";
 	next;
 	switch(select("I'm going there!:Sandaruman Fortress?:Cancel")) {
 	case 1:

+ 13 - 13
npc/cities/lighthalzen.txt

@@ -333,7 +333,7 @@ lighthalzen,230,182,4	script	Klaubis#zen3	866,{
 		mes "many people stay in their";
 		mes "hometowns. Even if you do";
 		mes "leave, though, you can always";
-		mes "come back. It wouldn't be your^FFFFFF ^000000 hometown if you couldn't, right?";
+		mes "come back. It wouldn't be your hometown if you couldn't, right?";
 		close;
 	case 2:
 		mes "[Klaubis]";
@@ -461,7 +461,7 @@ lighthalzen,132,103,5	script	Sefith#li_01	734,{
 	mes "Good looks. Intelligence.";
 	mes "Excellent manners. A strong,";
 	mes "manly chin and overpowering,";
-	mes "piercing eyes. Perfectly balanced^FFFFFF ^000000 passion and charimsma. All the";
+	mes "piercing eyes. Perfectly balanced passion and charimsma. All the";
 	mes "good things that ladies want.";
 	next;
 	mes "[Sefith]";
@@ -1084,8 +1084,8 @@ OnTouch:
 			mes "[Beggar]";
 			mes "What you can see and";
 			mes "understand might not match";
-			mes "with reality. Like the stars that^FFFFFF ^000000 are always there, but not visible";
-			mes "during the day, we'll always have^FFFFFF ^000000 hope, even if we can't see it.";
+			mes "with reality. Like the stars that are always there, but not visible";
+			mes "during the day, we'll always have hope, even if we can't see it.";
 			next;
 			mes "[" + strcharinfo(0) + "]";
 			emotion e_dots,1;
@@ -1113,7 +1113,7 @@ OnTouch:
 			mes "sort of don't. Let me explain";
 			mes "it this way. I take life day by";
 			mes "day, with each day covering its";
-			mes "own spectrum with miracle on^FFFFFF ^000000 one end and tragedy on the other.";
+			mes "own spectrum with miracle on one end and tragedy on the other.";
 			next;
 			mes "[Beggar]";
 			mes "So each day has the capacity";
@@ -1133,7 +1133,7 @@ OnTouch:
 			next;
 			mes "[Beggar]";
 			mes "Stand up when you're down";
-			mes "and live your life with passion.^FFFFFF ^000000 The capacity for miracles will";
+			mes "and live your life with passion. The capacity for miracles will";
 			mes "always be there and know that";
 			mes "you can be someone else's";
 			mes "miracle. Isn't that wonderful?";
@@ -1174,14 +1174,14 @@ OnTouch:
 			mes "isn't so productive. More of";
 			mes "a frustration that you can let";
 			mes "go. Someone cut you off on the";
-			mes "freeway or a friend innocently^FFFFFF ^000000 forgot your birthday? No biggie.";
+			mes "freeway or a friend innocently forgot your birthday? No biggie.";
 			next;
 			mes "[Beggar]";
 			mes "Don't let this kind of";
 			mes "anger get to you or you'll";
 			mes "look like a loser. Think of";
 			mes "the big picture and if you're";
-			mes "still upset, vent appropriately.^FFFFFF ^000000 Be honest without hurting anyone.";
+			mes "still upset, vent appropriately. Be honest without hurting anyone.";
 			next;
 			mes "[Beggar]";
 			mes "The second kind of anger";
@@ -1204,7 +1204,7 @@ OnTouch:
 			mes "righteous anger, say to protect";
 			mes "someone dear to you, will make";
 			mes "you a hero. Fighting with anger";
-			mes "born of frustration will make you^FFFFFF ^000000 a bully. Know the difference.";
+			mes "born of frustration will make you a bully. Know the difference.";
 			next;
 			mes "[" + strcharinfo(0) + "]";
 			emotion e_dots,1;
@@ -1383,7 +1383,7 @@ lhz_in01,139,40,7	script	Enoz#oz	53,{
 	mes "[Enoz]";
 	mes "So, the novel I ordered from";
 	mes "the Rune-Midgarts Kingdom";
-	mes "just recently arrived. It's real^FFFFFF ^000000 good, by the guy who wrote";
+	mes "just recently arrived. It's real good, by the guy who wrote";
 	mes "''Roda Frog Adventure''";
 	mes "years ago. Remember?";
 	next;
@@ -2592,7 +2592,7 @@ lighthalzen,107,107,3	script	Kosit#zen1	869,{
 	mes "these rules is because of all";
 	mes "the unruly gangsters that can";
 	mes "sometimes get into the city.";
-	mes "I mean, it's relatively peaceful^FFFFFF ^000000 and all. But these rules...";
+	mes "I mean, it's relatively peaceful and all. But these rules...";
 	next;
 	mes "[Kosit]";
 	mes "It's good to be safe,";
@@ -2669,7 +2669,7 @@ lighthalzen,364,282,3	script	Bodger#zen5	870,{
 	mes "I hear that the people";
 	mes "who live Uptown eat totally";
 	mes "delicious, gourmet food eight";
-	mes "times a day! Hopefully it's just^FFFFFF ^000000 an exaggeration. 'Cuz if it";
+	mes "times a day! Hopefully it's just an exaggeration. 'Cuz if it";
 	mes "wasn't, I'd be so mad...";
 	close;
 }
@@ -2986,7 +2986,7 @@ lhz_in01,139,48,7	script	Leimi#mimir	73,{
 			mes "[Leimi]";
 			mes "Oh, you're an Assassin!";
 			mes "Oh, you boys are soooo cute!";
-			mes "And so cool and so mysterious^FFFFFF ^000000 all at the same time! I love you!";
+			mes "And so cool and so mysterious all at the same time! I love you!";
 		}
 		else {
 			next;

+ 0 - 36
npc/custom/battleground/bg_common.txt

@@ -133,42 +133,6 @@ bat_room,160,140,3	script	Prince Croix	416,{
 	end;
 }
 
-// Time calculation Function
-// *********************************************************************
-function	script	Time2Str	{
-	set .@Time_Left, getarg(0) - gettimetick(2);
-	
-	set .@Days, .@Time_Left / 86400;
-	set .@Time_Left, .@Time_Left - (.@Days * 86400);
-	set .@Hours, .@Time_Left / 3600;
-	set .@Time_Left, .@Time_Left - (.@Hours * 3600);
-	set .@Minutes, .@Time_Left / 60;
-	set .@Time_Left, .@Time_Left - (.@Minutes * 60);
-	
-	set .@Time$, "";
-	if( .@Days > 1 )
-		set .@Time$, .@Time$ + .@Days + " days, ";
-	else if( .@Days > 0 )
-		set .@Time$, .@Time$ + .@Days + " day, ";
-
-	if( .@Hours > 1 )
-		set .@Time$, .@Time$ + .@Hours + " hours, ";
-	else if( .@Hours > 0 )
-		set .@Time$, .@Time$ + .@Hours + " hour, ";
-
-	if( .@Minutes > 1 )
-		set .@Time$, .@Time$ + .@Minutes + " minutes, ";
-	else if( .@Minutes > 0 )
-		set .@Time$, .@Time$ + .@Minutes + " minute, ";
-
-	if( .@Time_Left > 1 || .@Time_Left == 0 )
-		set .@Time$, .@Time$ + .@Time_Left + " seconds.";
-	else if( .@Time_Left == 1 )
-		set .@Time$, .@Time$ + .@Time_Left + " second.";
-	
-	return .@Time$;
-}
-
 // Guillaume Knight - Tierra Valley
 // *********************************************************************
 bat_room,159,178,5	script	Guillaume Knight#1	417,{

+ 14 - 15
npc/custom/etc/bank.txt

@@ -16,11 +16,11 @@
 //============================================================ 
 
 prontera,132,217,5	script	Banker	109,{
-set @cost,500;
-mes "[Banker]";
-mes "Welcome to the First Bank of Prontera. How can I help you today?";
-next;
-switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) {
+	set @cost,500;
+	mes "[Banker]";
+	mes "Welcome to the First Bank of Prontera. How can I help you today?";
+	next;
+	switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) {
 	case 1:
 		mes "[Banker]";
 		mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny.";
@@ -44,14 +44,13 @@ switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's
 			close;
 		}
 		else {
-		set Zeny,Zeny - @deposit;
-		set Zeny,Zeny - @cost;
-		set #bankstorage,#bankstorage + @deposit;
-		mes "[Banker]";
-		mes "Thank you very much... Your zeny is in good hands.";
-		close;
+			set Zeny,Zeny - @deposit;
+			set Zeny,Zeny - @cost;
+			set #bankstorage,#bankstorage + @deposit;
+			mes "[Banker]";
+			mes "Thank you very much... Your zeny is in good hands.";
+			close;
 		}
-
 	case 2:
 		mes "[Banker]";
 		mes "Very well... How much would you like to withdraw? The maximum you can withdraw at one time is 999,999 Zeny";
@@ -67,7 +66,7 @@ switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's
 			close;
 		}
 		else if (@withdrawl > #bankstorage) {
-			mes "I show you only have ^00FF00" + #bankstorage +"^000000 zeny in your account!";
+			mes "You only have ^00FF00" + callfunc("F_InsertComma",#bankstorage) +"^000000 zeny in your account!";
 			close;
 		}
 		else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) {
@@ -104,12 +103,12 @@ switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's
 		}
 	case 3:
 		mes "[Banker]";
-		mes "Hmmmm let me check some paper work.";
+		mes "Hmmmm... let me check some paper work.";
 		next;
 		mes "*Rustle, Rustle*";
 		next;
 		mes "[Banker]";
-		mes "You currently have " + #bankstorage + " Zeny in your account.";
+		mes "You currently have " + callfunc("F_InsertComma",#bankstorage) + " Zeny in your account.";
 		close;
 	case 4:
 		mes "[Banker]";

+ 9 - 18
npc/custom/quests/hunting_missions.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Euphy
 //===== Current Version: =====================================
-//= 1.3a
+//= 1.3b
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: =========================================
@@ -16,10 +16,11 @@
 //=     SQL query, both thanks to AnnieRuru.
 //= 1.3 Re-added a blacklist adapted for the SQL query.
 //= 1.3a Added mission reset options.
+//= 1.3b Function updates.
 //============================================================
 
 prontera,152,187,6	script	Hunting Missions	951,{
-function Chk; function Cm;
+function Chk;
 	mes "[Hunting Missions]";
 	mes "Hello, "+strcharinfo(0)+"!";
 	if (!#Mission_Delay) {
@@ -38,7 +39,7 @@ function Chk; function Cm;
 	mes "Is there anything I can help";
 	mes "you with?";
 	mes " ";
-	mes "^777777~ You've completed ^0055FF"+Mission_Total+"^777777 mission"+((Mission_Total == 1)?"":"s")+". ~^000000";
+	mes "^777777~ You've completed ^0055FF"+callfunc("F_InsertPlural",Mission_Total,"mission")+"^777777. ~^000000";
 	next;
 	switch(select(((!Mission0)?" ~ New Mission::":": ~ Mission Status: ~ Abandon Mission")+": ~ Information: ~ Mission Shop: ~ View Top Hunters: ~ ^777777Cancel^000000")) {
 	case 1:
@@ -49,11 +50,7 @@ function Chk; function Cm;
 			close;
 		}
 		if (#Mission_Delay > gettimetick(2) && .Delay) {
-			set .@i, #Mission_Delay-gettimetick(2);
-			if (.@i > 3600) set .@j$, (.@i/3600)+" hour"+(((.@i/3600) == 1)?"":"s");
-			else if (.@i > 60) set .@j$, (.@i/60)+" minute"+(((.@i/60) == 1)?"":"s");
-			else set .@j$, (.@i)+" second"+((.@i == 1)?"":"s");
-			mes "I'm afraid you'll have to wait "+.@j$+" before taking another mission.";
+			mes "I'm afraid you'll have to wait "+callfunc("Time2Str",#Mission_Delay)+" before taking another mission.";
 			close;
 		}
 		mes "You must hunt:";
@@ -82,7 +79,7 @@ function Chk; function Cm;
 		if (.Reset < 0 && .Delay)
 			mes "Your delay time will not be reset.";
 		else if (.Reset > 0)
-			mes "It will cost "+Cm(.Reset)+" Zeny.";
+			mes "It will cost "+callfunc("F_InsertComma",.Reset)+" Zeny.";
 		next;
 		switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) {
 		case 1:
@@ -160,9 +157,9 @@ Mission_Status:
 	mes "[Hunting Missions]";
 	mes "Mission rewards:";
 	mes " > Mission Points: ^0055FF"+.@Mission_Points+"^000000";
-	mes " > Base Experience: ^0055FF"+Cm(.@Base_Exp)+"^000000";
-	mes " > Job Experience: ^0055FF"+Cm(.@Job_Exp)+"^000000";
-	mes " > Zeny: ^0055FF"+Cm(.@Zeny)+"^000000";
+	mes " > Base Experience: ^0055FF"+callfunc("F_InsertComma",.@Base_Exp)+"^000000";
+	mes " > Job Experience: ^0055FF"+callfunc("F_InsertComma",.@Job_Exp)+"^000000";
+	mes " > Zeny: ^0055FF"+callfunc("F_InsertComma",.@Zeny)+"^000000";
 	if (@f) { set @f,0; return; }
 	next;
 	mes "[Hunting Missions]";
@@ -212,12 +209,6 @@ function Chk {
 	if (getarg(0) < getarg(1)) { set @f,1; return "^FF0000"; }
 	else return "^00FF00"; }
 
-function Cm {
-	set .@str$, getarg(0);
-	for(set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3)
-		set .@str$, insertchar(.@str$,",",.@i);
-	return .@str$; }
-
 OnBuyItem:
 	set @cost,0;
 	for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1)

+ 4 - 11
npc/custom/quests/quest_shop.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Euphy
 //===== Current Version: =====================================
-//= 1.6b
+//= 1.6c
 //===== Compatible With: =====================================
 //= rAthena SVN r16862+
 //===== Description: =========================================
@@ -19,6 +19,7 @@
 //= 1.6 Added support for purchasing stackables.
 //= 1.6a Added support for previewing costumes and robes.
 //= 1.6b Added 'disable_items' command.
+//= 1.6c Replaced function 'A_An' with "F_InsertArticle".
 //============================================================
 
 // Shop NPCs -- supplying no argument displays entire menu.
@@ -30,7 +31,7 @@ prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
 // Script Core
 //============================================================
 -	script	quest_shop	-1,{ 
-function Add; function Chk; function Slot; function A_An;
+function Add; function Chk; function Slot;
 OnInit:
 	freeloop(1);
 
@@ -147,7 +148,7 @@ OnBuyItem:
 			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
 				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
 			getitem .@q[0],.@q[2];
-			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
+			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0;
 			specialeffect2 EF_FLOWERLEAF;
 			close;
 		case 2:
@@ -206,14 +207,6 @@ function Slot {
 		default: return .@s$;
 	}
 }
-
-function A_An {
-	setarray .@A$[0],"a","e","i","o","u";
-	set .@B$, "_"+getarg(0);
-	for(set .@i,0; .@i<5; set .@i,.@i+1)
-		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
-	return "a "+getarg(0);
-}
 }
 
 function	script	qshop	{

+ 123 - 118
npc/custom/warper.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Euphy
 //===== Current Version: =====================================
-//= 1.4
+//= 1.4a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -16,6 +16,7 @@
 //= 1.3 Added Renewal checks and Instances menu.
 //=     Aligned coordinates with @go.
 //= 1.4 Added new Guild Dungeons.
+//= 1.4a Slight edits.
 //============================================================
 
 -	script	Warper	-1,{
@@ -26,9 +27,13 @@ function Go; function Disp; function Pick; function Restrict;
 // --------------------------------------------------
 
 menu	"Last Warp ^777777["+lastwarp$+"]^000000",-,
-	" ~ Towns",Towns, " ~ Fields",Fields, " ~ Dungeons",Dungeons,
-	" ~ Guild Castles",Castles, " ~ Guild Dungeons",Guild_Dungeons,
-	" ~ Instances",Instances, " ~ Special Areas",Special;
+    	" ~ Towns",Towns,
+    	" ~ Fields",Fields,
+    	" ~ Dungeons",Dungeons,
+    	" ~ Guild Castles",Castles,
+    	" ~ Guild Dungeons",Guild_Dungeons,
+    	" ~ Instances",Instances,
+    	" ~ Special Areas",Special;
 
 	if (lastwarp$ == "")
 		message strcharinfo(0),"You haven't warped anywhere yet.";
@@ -60,8 +65,10 @@ menu	"Last Warp ^777777["+lastwarp$+"]^000000",-,
 // --------------------------------------------------
 
 function Go {
+	set lastwarp$, getarg(0);
+	set lastwarpx, getarg(1,0);
+	set lastwarpy, getarg(2,0);
 	warp getarg(0),getarg(1,0),getarg(2,0);
-	getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
 	end;
 }
 function Disp {
@@ -69,7 +76,7 @@ function Disp {
 		set @menu$, getarg(0);
 	else {
 		set @menu$,"";
-		for(set .@i,getarg(1); .@i<=getarg(2); set .@i,.@i+1)
+		for (set .@i,getarg(1); .@i<=getarg(2); set .@i,.@i+1)
 			set @menu$, @menu$+getarg(0)+" "+.@i+":";
 	}
 	return;
@@ -77,12 +84,11 @@ function Disp {
 function Pick {
 	set .@warp_block,@warp_block;
 	set @warp_block,0;
+	set .@select, select(@menu$);
 	if (getarg(0) == "") {
-		set .@select, select(@menu$);
 		set .@i, .@select;
 		set .@map$, getarg(.@i);
 	} else {
-		set .@select, select(@menu$);
 		set .@i, .@select-getarg(1,0);
 		set .@map$, getarg(0)+((.@i<10)?"0":"")+.@i;
 	}
@@ -90,16 +96,16 @@ function Pick {
 		message strcharinfo(0),"This map is not enabled in "+((checkre(0))?"":"Pre-")+"Renewal.";
 		end;
 	}
-	warp .@map$,@c[.@i*2],@c[.@i*2+1];
-	getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
+	set .@x, @c[.@i*2];
+	set .@y, @c[.@i*2+1];
 	deletearray @c[0],getarraysize(@c);
-	end;
+	Go(.@map$,.@x,.@y);
 }
 function Restrict {
 	if ((getarg(0) == "RE" && !checkre(0)) || (getarg(0) == "Pre-RE" && checkre(0))) {
 		if (getarg(1,0)) {
 			set @warp_block,0;
-			for(set .@i,1; .@i<getargcount(); set .@i,.@i+1)
+			for (set .@i,1; .@i<getargcount(); set .@i,.@i+1)
 				set @warp_block, @warp_block | (1<<getarg(.@i));
 		} else {
 			message strcharinfo(0),"This map is not enabled in "+((checkre(0))?"":"Pre-")+"Renewal.";
@@ -113,13 +119,13 @@ function Restrict {
 	Towns:
 // --------------------------------------------------
 menu	"Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5,
-	"Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10, 
-	"Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15,
-	"Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20,
-	"Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24,
-	"Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28,
-	"Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33,
-	"Umbala",T34, "Veins",T35, "Yuno",T36;
+    	"Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10, 
+    	"Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15,
+    	"Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20,
+    	"Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24,
+    	"Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28,
+    	"Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33,
+    	"Umbala",T34, "Veins",T35, "Yuno",T36;
 
 T1: Go("prontera",155,183);
 T2: Go("alberta",28,234);
@@ -136,7 +142,7 @@ T9: Restrict("RE");
 T10: Go("einbech",63,35);
 T11: Go("einbroch",64,200);
 T12: Restrict("RE");
-	Go("dicastes01",198,187);
+	 Go("dicastes01",198,187);
 T13: Go("geffen",119,59);
 T14: Go("gonryun",160,120);
 T15: Go("hugel",96,145);
@@ -146,13 +152,13 @@ T18: Go("lighthalzen",158,92);
 T19: Go("louyang",217,100);
 T20: Go("xmas",147,134);
 T21: Restrict("RE");
-	Go("malangdo",140,114);
+	 Go("malangdo",140,114);
 T22: Restrict("RE");
-	Go("malaya",231,200);
+	 Go("malaya",231,200);
 T23: Go("manuk",282,138);
 T24: Go("mid_camp",210,288);
 T25: Restrict("RE");
-	Go("mora",55,146);
+	 Go("mora",55,146);
 T26: Go("morocc",156,93);
 T27: Go("moscovia",223,184);
 T28: Go("nameless_n",256,215);
@@ -169,15 +175,15 @@ T36: Go("yuno",157,51);
 	Fields:
 // --------------------------------------------------
 menu	"Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3,
-	"Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6,
-	"Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9,
-	"Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12,
-	"Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15,
-	"Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18,
-	"Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21,
-	"Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24,
-	"Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27,
-	"Yuno Fields",F28;
+    	"Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6,
+    	"Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9,
+    	"Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12,
+    	"Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15,
+    	"Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18,
+    	"Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21,
+    	"Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24,
+    	"Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27,
+    	"Yuno Fields",F28;
 
 F1: setarray @c[2],190,197;
 	Disp("Amatsu Field",1,1); Pick("ama_fild");
@@ -205,67 +211,67 @@ F9: Restrict("RE");
 	setarray @c[2],143,132,143,217;
 	Disp("El Dicastes Field",1,2); Pick("dic_fild");
 F10: Restrict("Pre-RE",13,15);
-	setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
-	Disp("Geffen Field",0,14); Pick("gef_fild",1);
+	 setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
+	 Disp("Geffen Field",0,14); Pick("gef_fild",1);
 F11: setarray @c[2],220,227;
-	Disp("Gonryun Field",1,1); Pick("gon_fild");
+	 Disp("Gonryun Field",1,1); Pick("gon_fild");
 F12: Restrict("Pre-RE",3,7);
-	setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
-	Disp("Hugel Field",1,7); Pick("hu_fild");
+	 setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
+	 Disp("Hugel Field",1,7); Pick("hu_fild");
 F13: setarray @c[2],240,179,185,235,240,226;
-	Disp("Lighthalzen Field",1,3); Pick("lhz_fild");
+	 Disp("Lighthalzen Field",1,3); Pick("lhz_fild");
 F14: setarray @c[2],229,187;
-	Disp("Louyang Field",1,1); Pick("lou_fild");
+	 Disp("Louyang Field",1,1); Pick("lou_fild");
 F15: setarray @c[2],115,145;
-	Disp("Lutie Field",1,1); Pick("xmas_fild");
+	 Disp("Lutie Field",1,1); Pick("xmas_fild");
 F16: Restrict("RE");
-	setarray @c[2],40,272,207,180;
-	Disp("Malaya Field",1,2); Pick("ma_fild");
+	 setarray @c[2],40,272,207,180;
+	 Disp("Malaya Field",1,2); Pick("ma_fild");
 F17: setarray @c[2],35,236,35,262,84,365;
-	Disp("Manuk Field",1,3); Pick("man_fild");
+	 Disp("Manuk Field",1,3); Pick("man_fild");
 F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208;
-	Disp("Mjolnir Field",1,12); Pick("mjolnir_");
+	 Disp("Mjolnir Field",1,12); Pick("mjolnir_");
 F19: setarray @c[2],82,104,131,147;
-	Disp("Moscovia Field",1,2); Pick("mosk_fild");
+	 Disp("Moscovia Field",1,2); Pick("mosk_fild");
 F20: setarray @c[2],215,229,167,234;
-	Disp("Niflheim Field",1,2); Pick("nif_fild");
+	 Disp("Niflheim Field",1,2); Pick("nif_fild");
 F21: Restrict("Pre-RE",5,11);
-	setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
-	Disp("Payon Forest",1,11); Pick("pay_fild");
+	 setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
+	 Disp("Payon Forest",1,11); Pick("pay_fild");
 F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164;
-	Disp("Prontera Field",0,11); Pick("prt_fild",1);
+	 Disp("Prontera Field",0,11); Pick("prt_fild",1);
 F23: Restrict("Pre-RE",2,7,9,10,11,13);
-	setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
-	Disp("Rachel Field",1,13); Pick("ra_fild");
+	 setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
+	 Disp("Rachel Field",1,13); Pick("ra_fild");
 F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195;
-	Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
-	Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22");
+	 Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
+	 Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22");
 F25: setarray @c[2],175,186,236,184,188,204;
-	Disp("Splendide Field",1,3); Pick("spl_fild");
+	 Disp("Splendide Field",1,3); Pick("spl_fild");
 F26: setarray @c[2],217,206,223,221,237,215,202,197;
-	Disp("Umbala Field",1,4); Pick("um_fild");
+	 Disp("Umbala Field",1,4); Pick("um_fild");
 F27: Restrict("Pre-RE",5);
-	setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
-	Disp("Veins Field",1,7); Pick("ve_fild");
+	 setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
+	 Disp("Veins Field",1,7); Pick("ve_fild");
 F28: Restrict("Pre-RE",5,10);
-	setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
-	Disp("Yuno Field",1,12); Pick("yuno_fild");
+	 setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
+	 Disp("Yuno Field",1,12); Pick("yuno_fild");
 
 // --------------------------------------------------
 	Dungeons:
 // --------------------------------------------------
 menu	"Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3,
-	"Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41,
-	"Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9,
-	"Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13,
-	"Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16,
-	"Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19,
-	"Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
-	"Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26,
-	"Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29,
-	"Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32,
-	"Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36,
-	"Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
+    	"Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41,
+    	"Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9,
+    	"Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13,
+    	"Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16,
+    	"Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19,
+    	"Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
+    	"Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26,
+    	"Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29,
+    	"Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32,
+    	"Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36,
+    	"Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
 
 D1: setarray @c[2],261,272,275,270,116,27;
 	Disp("Abyss Lakes",1,3); Pick("abyss_");
@@ -290,85 +296,85 @@ D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74;
 	Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4");
 	Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04");
 D10: setarray @c[2],52,17,381,343,302,262;
-	Disp("Coal Mines",1,3); Pick("mjo_dun");
+	 Disp("Coal Mines",1,3); Pick("mjo_dun");
 D11: setarray @c[2],131,247,19,19,180,169,100,92;
-	Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4");
+	 Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4");
 D12: setarray @c[2],51,14,150,11,120,10;
-	Disp("Cursed Abbey",1,3); Pick("abbey");
+	 Disp("Cursed Abbey",1,3); Pick("abbey");
 D13: Restrict("RE");
-	setarray @c[2],285,160,299,29;
-	Disp("Dewata Dungeon",1,2); Pick("dew_dun");
+	 setarray @c[2],285,160,299,29;
+	 Disp("Dewata Dungeon",1,2); Pick("dew_dun");
 D14: setarray @c[2],22,14,292,290;
-	Disp("Einbroch Dungeon",1,2); Pick("ein_dun");
+	 Disp("Einbroch Dungeon",1,2); Pick("ein_dun");
 D15: setarray @c[2],40,103,203,34,266,168,130,272;
-	Disp("Gefenia",1,4); Pick("gefenia",0);
+	 Disp("Gefenia",1,4); Pick("gefenia",0);
 D16: setarray @c[0],104,99,115,236,106,132,203,200;
-	Disp("Geffen Dungeon",1,4); Pick("gef_dun",1);
+	 Disp("Geffen Dungeon",1,4); Pick("gef_dun",1);
 D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14;
-	Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
-	Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1");
+	 Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
+	 Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1");
 D18: setarray @c[2],153,53,28,113,68,16;
-	Disp("Gonryun Dungeon",1,3); Pick("gon_dun");
+	 Disp("Gonryun Dungeon",1,3); Pick("gon_dun");
 D19: setarray @c[2],176,7,93,20,23,8;
-	Disp("Hidden Dungeon",1,3); Pick("prt_maze");
+	 Disp("Hidden Dungeon",1,3); Pick("prt_maze");
 D20: setarray @c[2],157,14,151,155,149,22,33,158;
-	Disp("Ice Dungeon",1,4); Pick("ice_dun");
+	 Disp("Ice Dungeon",1,4); Pick("ice_dun");
 D21: setarray @c[2],140,51,53,247,37,63,150,285;
-	Disp("Entrance:Juperos 1:Juperos 2:Core");
-	Pick("","jupe_cave","juperos_01","juperos_02","jupe_core");
+	 Disp("Entrance:Juperos 1:Juperos 2:Core");
+	 Pick("","jupe_cave","juperos_01","juperos_02","jupe_core");
 D22: setarray @c[2],28,226,41,198;
-	Disp("Kiel Dungeon",1,2); Pick("kh_dun");
+	 Disp("Kiel Dungeon",1,2); Pick("kh_dun");
 D23: setarray @c[2],218,196,282,20,165,38;
-	Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
+	 Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
 D24: setarray @c[2],126,68,47,30;
-	Disp("Magma Dungeon",1,2); Pick("mag_dun");
+	 Disp("Magma Dungeon",1,2); Pick("mag_dun");
 D25: Restrict("RE");
-	setarray @c[2],33,230;
-	Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
+	 setarray @c[2],33,230;
+	 Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
 D26: setarray @c[2],189,48,165,30,32,135;
-	Disp("Moscovia Dungeon",1,3); Pick("mosk_dun");
+	 Disp("Moscovia Dungeon",1,3); Pick("mosk_dun");
 D27: setarray @c[2],61,239,60,271;
-	Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun");
+	 Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun");
 D28: setarray @c[2],298,167,224,149,266,280;
-	Disp("Odin Temple",1,3); Pick("odin_tem");
+	 Disp("Odin Temple",1,3); Pick("odin_tem");
 D29: setarray @c[2],32,170,21,185;
-	Disp("Orc Dungeon",1,2); Pick("orcsdun");
+	 Disp("Orc Dungeon",1,2); Pick("orcsdun");
 D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204;
-	Disp("Payon Dungeon",1,5); Pick("pay_dun",1);
+	 Disp("Payon Dungeon",1,5); Pick("pay_dun",1);
 D31: Restrict("RE",7,8);
-	setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8;
-	Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode");
-	Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2");
+	 setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8;
+	 Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode");
+	 Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2");
 D32: setarray @c[2],140,11,32,21,4,149,204,218,150,9;
-	Disp("Rachel Sanctuary",1,5); Pick("ra_san");
+	 Disp("Rachel Sanctuary",1,5); Pick("ra_san");
 D33: Restrict("RE");
-	setarray @c[2],364,44,101,141;
-	Disp("Scaraba Hole",1,2); Pick("dic_dun");
+	 setarray @c[2],364,44,101,141;
+	 Disp("Scaraba Hole",1,2); Pick("dic_dun");
 D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99;
-	Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5");
+	 Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5");
 D35: setarray @c[2],69,24,102,27;
-	Disp("Sunken Ship",1,2); Pick("treasure");
+	 Disp("Sunken Ship",1,2); Pick("treasure");
 D36: setarray @c[2],150,39,150,136,220,158,59,143,62,11,89,221,35,166,93,148,29,107,159,138,19,20,130,52;
-	Disp("Thanatos Tower",1,12); Pick("tha_t");
+	 Disp("Thanatos Tower",1,12); Pick("tha_t");
 D37: setarray @c[2],21,228,75,205,34,272;
-	Disp("Thor Volcano",1,3); Pick("thor_v");
+	 Disp("Thor Volcano",1,3); Pick("thor_v");
 D38: setarray @c[2],205,15,129,133;
-	Disp("Toy Factory",1,2); Pick("xmas_dun");
+	 Disp("Toy Factory",1,2); Pick("xmas_dun");
 D39: setarray @c[2],154,49,148,261,132,189,100,192;
-	Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
+	 Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
 D40: Restrict("Pre-RE",1,2);
-	setarray @c[2],42,31,48,30,204,78;
-	Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
-	Pick("","um_dun01","um_dun02","yggdrasil01");
+	 setarray @c[2],42,31,48,30,204,78;
+	 Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
+	 Pick("","um_dun01","um_dun02","yggdrasil01");
 D41: Restrict("RE");
-	setarray @c[2],57,13,64,88,45,14,26,23;
-	Disp("Bifrost Tower",1,4); Pick("ecl_tdun");
+	 setarray @c[2],57,13,64,88,45,14,26,23;
+	 Disp("Bifrost Tower",1,4); Pick("ecl_tdun");
 
 // --------------------------------------------------
 	Castles:
 // --------------------------------------------------
 menu	"Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3,
-	"Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6;
+    	"Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6;
 
 C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90;
 	Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg");
@@ -393,7 +399,7 @@ C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315;
 	Guild_Dungeons:
 // --------------------------------------------------
 menu	"Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4,
-	"Arunafeltz",G5, "Schwaltzvalt",G6;
+    	"Arunafeltz",G5, "Schwaltzvalt",G6;
 
 G1: Restrict("RE",2,3);
 	setarray @c[2],119,93,119,93,120,130;
@@ -417,10 +423,9 @@ G6: Go("schg_dun01",200,124);
 // --------------------------------------------------
 	Instances:
 // --------------------------------------------------
-
 menu	"Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
-	"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
-	"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11;
+    	"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
+    	"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11;
 
 I1: Restrict("RE");
 	Go("ma_scene01",172,175);
@@ -445,7 +450,7 @@ I11: Go("monk_test",306,143);
 	Special:
 // --------------------------------------------------
 menu	"Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4,
-	"Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8;
+    	"Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8;
 
 S1: Go("auction_01",22,68);
 S2: Go("bat_room",154,150);

+ 3 - 3
npc/guild2/agit_main_se.txt

@@ -697,12 +697,12 @@ OnStartArena:
 						mes .@n$;
 						mes "Guardian Stones that have";
 						mes "been destroyed can be revived";
-						mes "after a certain time, but one of^FFFFFF ^000000 the guild members must give";
-						mes "me the order. I can also report^FFFFFF ^000000 the status of the Guardian Stones.";
+						mes "after a certain time, but one of the guild members must give";
+						mes "me the order. I can also report the status of the Guardian Stones.";
 						close;
 					case 2:
 						mes .@n$;
-						mes "^4D4DFFFortress Gates^000000 are the second ^FFFFFF ^000000 line of guild stronghold defense,";
+						mes "^4D4DFFFortress Gates^000000 are the second line of guild stronghold defense,";
 						mes "and are protected by extra barricades activated by the Guardian Stones.";
 						mes "These gates are located in three different parts of the fortress.";
 						next;

+ 2 - 10
npc/instances/EndlessTower.txt

@@ -1271,23 +1271,15 @@ OnMyMobDead:
 		initnpctimer;
 		//SetItemPartyInMap in_102floor .@level
 	} else
-		mapannounce .@map$, "Remaining Monsters on the "+callsub(L_Display,.@level)+" Level - "+.@mob_dead_num,bc_map,"0x00ff99";
+		mapannounce .@map$, "Remaining Monsters on the "+callfunc("F_GetNumSuffix",.@level)+" Level - "+.@mob_dead_num,bc_map,"0x00ff99";
 	end;
 
 OnTimer5000:
 	set .@level, atoi(replacestr(strnpcinfo(0),"FGate102tower","")) + 1;
-	mapannounce strnpcinfo(4), "All Monsters on the "+callsub(L_Display,.@level)+" Level have been defeated.",bc_map,"0xffff00";
+	mapannounce strnpcinfo(4), "All Monsters on the "+callfunc("F_GetNumSuffix",.@level)+" Level have been defeated.",bc_map,"0xffff00";
 	donpcevent instance_npcname(.@level+"FGate102tower")+"::OnEnable";
 	stopnpctimer;
 	end;
-
-L_Display:
-	// Display level properly.
-	set .@mod, getarg(0) % 10;
-	if (.@mod == 1 && getarg(0) != 11) return getarg(0)+"st";
-	else if (.@mod == 2 && getarg(0) != 12) return getarg(0)+"nd";
-	else if (.@mod == 3 && getarg(0) != 13) return getarg(0)+"rd";
-	else return getarg(0)+"th";
 }
 1@tower,96,393,0	duplicate(1FGate102tower)	2FGate102tower	45,2,2
 1@tower,184,393,0	duplicate(1FGate102tower)	3FGate102tower	45,2,2

+ 1 - 1
npc/jobs/1-1e/taekwon.txt

@@ -393,7 +393,7 @@ payon,157,141,5	script	Phoenix#TKJobChange	753,{
 			mes "uniform and guard set: make";
 			mes "good use of these gifts. As";
 			mes "you travel and train, enlighten";
-			mes "others about our art and learn^FFFFFF ^000000 what you can from them in return.";
+			mes "others about our art and learn what you can from them in return.";
 			next;
 			mes "[Phoenix]";
 			mes "It is now time for you to";

+ 5 - 5
npc/jobs/2-1e/StarGladiator.txt

@@ -100,7 +100,7 @@ payon,215,102,3	script	Moohyun#job_star	828,3,3,{
 							mes "[Moohyun]";
 							mes "Alright, you can find Moogang";
 							mes "in Comodo, supposedly at the";
-							mes "place that's closest to the sky.^FFFFFF ^000000 In the meantime, I'll write a";
+							mes "place that's closest to the sky. In the meantime, I'll write a";
 							mes "letter of recommendation that";
 							mes "I'll send to him for you.";
 							set STGL_Q,1;
@@ -383,7 +383,7 @@ comodo,172,230,3	script	Wandering Master#job_sta	730,{
 						mes "and improve your Taekwon Girl";
 					else
 						mes "and improve your Taekwon Boy";
-					mes "skills. When you are finished,^FFFFFF ^000000 come back here for your training.";
+					mes "skills. When you are finished, come back here for your training.";
 					close;
 				}
 				mes "[Moogang]";
@@ -481,7 +481,7 @@ comodo,172,230,3	script	Wandering Master#job_sta	730,{
 				mes "the nature of the universe";
 				mes "comes the respect for nature";
 				mes "and all things. Now, when you";
-				mes "are ready for the next test, then^FFFFFF ^000000";
+				mes "are ready for the next test, then";
 				mes "I shall guide you to the altar.";
 				delitem 996,1; //Rough_Wind
 				delitem 997,1; //Great_Nature
@@ -889,7 +889,7 @@ job_star,29,33,0	script	Daru#job_star	59,{
 				mes "Ah, yes. The warmth";
 				mes "of the sun brings comfort.";
 				mes "And without comfort, is life";
-				mes "truly worth living? Good answer. ^FFFFFF ^000000";
+				mes "truly worth living? Good answer.";
 				set .@sun_point,.@sun_point+10;
 				break;
 			case 3:
@@ -1561,7 +1561,7 @@ job_star,161,33,0	script	Cheehee#job_star	77,{
 			mes "gentle moonlight, and the";
 			mes "melancholic twinkling of the";
 			mes "stars are unique from each";
-			mes "other. Please enjoy the starlight^FFFFFF ^000000 in this room as long as you like.";
+			mes "other. Please enjoy the starlight in this room as long as you like.";
 			next;
 			mes "[Cheehee]";
 			mes "When you are ready,";

+ 1 - 1
npc/jobs/2-2/alchemist.txt

@@ -288,7 +288,7 @@ alde_alche,27,185,5	script	Alchemist Guildsman#am	744,{
 		mes "Aren't you ready?";
 		mes "Like I said before,";
 		mes "you must bring";
-		mes "^551A8B"+.@items[1]+" "+getitemname(.@items[0])+"s^000000.";
+		mes "^551A8B"+callfunc("F_InsertPlural",.@items[1],getitemname(.@items[0]))+"^000000.";
 		next;
 		mes "[Parmy Gianino]";
 		mes "Come back when you";

+ 2 - 2
npc/merchants/ammo_boxes.txt

@@ -65,13 +65,13 @@ alberta,118,157,3	script	Magazine Dealer Kenny::mdk	83,{
 function	script	Func_Casing	{
 	mes "[Kenny]";
 	mes "Now, you can trade";
-	mes "500 "+getitemname(getarg(0))+"s";
+	mes callfunc("F_InsertPlural",500,getitemname(getarg(0)));
 	mes "and 500 zeny for 1 "+getitemname(getarg(1))+", so make sure";
 	mes "you have sufficient bullets";
 	mes "and zeny for this exchange.";
 	next;
 	mes "[Kenny]";
-	mes "You can exchange 500 "+getitemname(getarg(0))+"s and 500 zeny";
+	mes "You can exchange "+callfunc("F_InsertPlural",500,getitemname(getarg(0)))+" and 500 zeny";
 	mes "with 1 "+getitemname(getarg(1))+".";
 	next;
 	mes "[Kenny]";

+ 4 - 4
npc/merchants/ammo_dealer.txt

@@ -64,11 +64,11 @@ alberta,118,160,3	script	Bullet Dealer Tony#alb::bdt	86,{
 function	script	Bullet_Trade	{
 	mes "[Tony]";
 	mes "For every set of";
-	mes "30 "+getitemname(getarg(2))+"s,";
+	mes callfunc("F_InsertPlural",30,getitemname(getarg(2)))+",";
 	mes "you must give me";
 	mes "1 Emveretarcon,";
 	mes "1 Phracon, and";
-	mes ""+getarg(1)+" "+getitemname(getarg(0))+".";
+	mes callfunc("F_InsertPlural",getarg(1),getitemname(getarg(0)))+".";
 	next;
 	mes "[Tony]";
 	mes "Remember that I can give";
@@ -106,8 +106,8 @@ function	script	Bullet_Trade	{
 			mes "these materials, and here are";
 			mes "your bullets. It's a pleasure";
 			mes "to do business with you~";
-			delitem 1010,.@amount;
-			delitem 1011,.@amount;
+			delitem 1010,.@amount; //Phracon
+			delitem 1011,.@amount; //Emveretarcon
 			delitem getarg(0),.@amount * getarg(1);
 			getitem getarg(2),.@amount * 30;
 			close;

+ 187 - 63
npc/other/Global_Functions.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Lupus, kobra_k88
 //===== Current Version: ===================================== 
-//= 2.18
+//= 2.2
 //===== Compatible With: ===================================== 
 //= rAthena 1.0
 //===== Description: ========================================= 
@@ -41,13 +41,14 @@
 //= 2.16 Added F_GetWeaponType, and F_GetArmorType. [L0ne_W0lf]
 //= 2.17 Renamed 'F_RandMes' to 'F_Rand'. [Euphy]
 //= 2.18 Removed useless 'getJobName' function. [Euphy]
+//= 2.2 Added "F_GetPlural", "F_InsertPlural", "F_InsertArticle", "F_InsertComma", "F_GetNumSuffix". [Euphy]
+//=     Standardized descriptions, updated 'F_GetArmorType'.
 //============================================================ 
 
-
 //////////////////////////////////////////////////////////////////////////////////
-// Function that clears job quest variables
+// Clears job quest variables.
+// -- callfunc "F_ClearJobVar"
 //////////////////////////////////////////////////////////////////////////////////
-
 function	script	F_ClearJobVar	{
 	// Misc ---------------------------------
 	set JBLVL,0;
@@ -88,6 +89,11 @@ function	script	F_ClearJobVar	{
 	return;
 }
 
+
+//////////////////////////////////////////////////////////////////////////////////
+// Clears other unused variables.
+// -- callfunc "F_ClearGarbage"
+//////////////////////////////////////////////////////////////////////////////////
 function	script	F_ClearGarbage	{
 	// Clear outdated global VARS
 	//Clear TURTLE var if the Turtle Islans Quest is already done
@@ -96,7 +102,7 @@ function	script	F_ClearGarbage	{
 	//Clear previously saved Quest Skills (now it isn't used)
 		set ADV_QSK,0;
 		set ADV_QSK2,0;
-	//Old Seset Skill Event used to use RES_SKILL var
+	//Old Reset Skill Event used to use RES_SKILL var
 		set RES_SKILL,0;
 	//Here you put outdated variables from your outdated EVENTS
 	//e.g. Is XMAS done? Add the EVENT var clearing code here.
@@ -122,15 +128,14 @@ function	script	F_ClearGarbage	{
 	return;
 }
 
+
 //////////////////////////////////////////////////////////////////////////////////
-// Used in REBIRTH scripts
-// Class = Internal Class ID
-// BaseJob = Base Job (0..23)
-// Upper : 0 - Default, 1 - Advanced, 2 - Baby
+// Job change based on Upper value (normal, advanced, baby).
+// -- callfunc "Job_Change",<Class value>;
+// See Job_* constants in 'db/const.txt' for Class values.
 //////////////////////////////////////////////////////////////////////////////////
-
 function	script	Job_Change	{
-	jobchange getarg(0),Upper; //Jobchange based on Upper
+	jobchange getarg(0),Upper;
 	logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
 	return;
 }
@@ -141,72 +146,61 @@ function	script	Job_Change	{
 //////////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Rand"
+// Returns a random argument.
+// -- callfunc "F_Rand",arg0,arg1,...
+// Example:
+//    // You can use it to pick a random number from a list:
+//    set @itemIDfromList, callfunc("F_Rand",1129,1222,1163,1357,1360,1522,1811,1410);
 //////////////////////////////////////////////////////////////////////////////////
-//returns random argument
-// Example: check F_Bye or F_Hi functions
-// READ AND THINK: You can use it to pick a random number from a list:
-// set @itemIDfromList, callfunc("F_Rand",1129,1222,1163,1357,1360,1522,1811,1410);
-
 function	script	F_Rand	{
 	return getarg(rand(getargcount()));
 }
 
 
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Sex"
+// Returns 1st argument if female, 2nd argument if male.
+// -- callfunc "F_Sex",argFemale,argMale
+// Example:
+//     mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!");
 //////////////////////////////////////////////////////////////////////////////////
-//returns 1st argument if female, 2nd argument otherwise
-// Example: mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!");
-
 function	script	F_SexMes	{
 	return getarg(Sex);
 }
 
 
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Hi"
+// Returns random "hello" and "goodbye" messages.
+// -- callfunc "F_Hi"
+// -- callfunc "F_Bye"
 //////////////////////////////////////////////////////////////////////////////////
-//returns random HELLO message
-
 function	script	F_Hi	{
 	return callfunc("F_Rand","Hi!","Hello!","Good day!","How are you?","Hello there.");
 }
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Bye"
-//////////////////////////////////////////////////////////////////////////////////
-//returns random BYE message
-
 function	script	F_Bye	{
 	return callfunc("F_Rand","Bye. See you again.","Later.","Goodbye.","Good luck!","Have a nice day!","Byebye!!!");
 }
 
 
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_ItemName"
+// Returns expanded item name string.
+// -- callfunc "F_ItemName",<item ID>,{<element>{,<VVS meter 0..3>{,<refine rate>}}}
+//    Elements: 0=none, 1=Ice, 2=Earth, 3=Fire, 4=Wind
+// Example:
+//    // Displays "Show me your ^000090+5 VVS Fire Knife^000000..."
+//    mes "Show me your "+callfunc("F_ItemName",1201,1,2,5)+"...";
 //////////////////////////////////////////////////////////////////////////////////
-// Returns expanded item name string
-//Argumentss
-// 0 - Item ID
-// 1 - Element N (0=none,1=Ice,2=Earth,3=Fire,4=Wind)
-// 2 - VVS meter 0...3
-// 3 - Refine
-// Example: mes "Show me your "+callfunc("F_ItemName",1201,1,2,5)+"...";
-//  is equal to: mes "Show me your ^000090 +5 VVS Fire Knife ^000000..."
-
 function	script	F_ItemName	{
-	if(getarg(3))
-		set .@t$,.@t$+"+"+getarg(3)+" ";
-	switch(getarg(2)) {
+	if (getarg(3,0))
+		set .@t$,"+"+getarg(3)+" ";
+	switch (getarg(2,0)) {
 		case 0: break;
 		case 1: set .@t$,.@t$+"VS "; break;
 		case 2: set .@t$,.@t$+"VVS "; break;
 		case 3: set .@t$,.@t$+"VVVS "; break;
 		default: set .@t$,.@t$+getarg(2)+"xVS "; break;
 	}
-	switch(getarg(1)) {
+	switch (getarg(1,0)) {
+		case 0: break;
 		case 1: set .@t$,.@t$+"Ice "; break;
 		case 2: set .@t$,.@t$+"Earth "; break;
 		case 3: set .@t$,.@t$+"Fire "; break;
@@ -216,8 +210,16 @@ function	script	F_ItemName	{
 	return "^000090"+.@t$+getitemname(getarg(0))+"^000000";
 }
 
+
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_SaveQuestSkills": Store learnt quest skills 
+// Stores learnt quest skills as variables ADV_QSK and ADV_QSK2.
+// -- callfunc "F_SaveQuestSkills"
+//
+// Restores learnt 1st class quest skills.
+// -- callfunc "F_Load1Skills"
+//
+// Restores learnt 2nd class quest skills.
+// -- callfunc "F_Load2Skills"
 //////////////////////////////////////////////////////////////////////////////////
 function	script	F_SaveQuestSkills	{
 	set ADV_QSK,0; set ADV_QSK2,0;
@@ -231,24 +233,14 @@ function	script	F_SaveQuestSkills	{
 	}
 	return;
 }
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Load1Skills": Restore learnt 1st class quest skills
-//////////////////////////////////////////////////////////////////////////////////
 function	script	F_Load1Skills	{
-	//1st classes quest skills
 	for(set .@i, 0; .@i < 14; set .@i, .@i + 1){
 		if(ADV_QSK|pow(2,.@i) == ADV_QSK) skill 144+.@i,1,0;
 	}
 	set ADV_QSK,0; //Clear var
 	return;
 }
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Load2Skills": Restore learnt 2nd class quest skills
-//////////////////////////////////////////////////////////////////////////////////
 function	script	F_Load2Skills	{
-	//2nd classes quest skills
 	for(set .@i, 0; .@i < 19; set .@i, .@i + 1){
 		if(ADV_QSK2|pow(2,.@i) == ADV_QSK2) skill 1001+.@i,1,0;
 	}
@@ -256,8 +248,10 @@ function	script	F_Load2Skills	{
 	return;
 }
 
+
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_GetWeaponType": Determine weapon type by view
+// Returns weapon type, based on view.
+// -- callfunc "F_GetWeaponType",<weapon ID>
 //////////////////////////////////////////////////////////////////////////////////
 function	script	F_GetWeaponType	{
 	switch(getiteminfo(getarg(0),11)) {
@@ -283,33 +277,56 @@ function	script	F_GetWeaponType	{
 		case 20: return "Shotgun"; break;
 		case 21: return "Grenade Launcher"; break;
 		case 22: return "Shuriken"; break;
-		default: return "Unable to Determine Equip Type"; break;
+		default: return "Unknown Weapon"; break;
 	}
 	end;
 }
 
+
 //////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_GetArmorType": Determine equipment type by equip location
+// Returns equipment type, based on equip location.
+// -- callfunc "F_GetArmorType",<item ID>
 //////////////////////////////////////////////////////////////////////////////////
 function	script	F_GetArmorType	{
 	switch(getiteminfo(getarg(0),5)) {
 		case 001: return "Lower Headgear"; break;
-		case 2: return "Weapon"; break;
+		case 2: return callfunc("F_GetWeaponType",getarg(0)); break;
 		case 4: return "Garment"; break;
 		case 8: return "Accessory"; break;
 		case 16: return "Armor"; break;
 		case 32: return "Shield"; break;
 		case 64: return "Shoes"; break;
 		case 128: return "Accessory"; break;
+		case 136: return "Accessory"; break; //8+128
 		case 256: return "Upper Headgear"; break;
 		case 512: return "Middle Headgear"; break;
-		default: return "Unable to Determine Equip Location"; break;
+		case 1024: return "Costume Upper Headgear"; break;
+		case 2048: return "Costume Midle Headgear"; break;
+		case 4096: return "Costume Lower Headgear"; break;
+		case 8192: return "Costume Garment"; break;
+		case 32768: return "Ammo"; break;
+		case 65536: return "Shadow Armor"; break;
+		case 131072: return "Shadow Weapon"; break;
+		case 262144: return "Shadow Shield"; break;
+		case 524288: return "Shadow Shoes"; break;
+		case 1048576: return "Shadow Accessory"; break;
+		case 2097152: return "Shadow Accessory"; break;
+		case 3145728: return "Shadow Accessory"; break; //1048576+2097152
+		default: return "Unknown Equip"; break;
 	}
 	end;
 }
 
-// Time calculation Function
-// *********************************************************************
+
+//////////////////////////////////////////////////////////////////////////////////
+// Returns time remaining in a readable format.
+// The argument is subtracted from UNIX epoch time, or 'gettimetick(2)'.
+// -- callfunc "Time2Str",<tick in UNIX epoch time>
+// Example:
+//    // Displays "Time left: 1 day, 1 hour, 8 minutes, 20 seconds"
+//    set .@Timer, gettimetick(2) + 90500;
+//    mes "Time left: " + callfunc("Time2Str",.@Timer);
+//////////////////////////////////////////////////////////////////////////////////
 function	script	Time2Str	{
 	set .@Time_Left, getarg(0) - gettimetick(2);
 	
@@ -343,3 +360,110 @@ function	script	Time2Str	{
 	
 	return .@Time$;
 }
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Functions for text manipulation [Euphy]
+//////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////////
+// Returns the plural of a noun - only follows basic rules, with few exceptions!
+// -- callfunc "F_GetPlural","<noun>"{,<1:uppercase>}
+// Examples:
+//    callfunc("F_GetPlural","dog")    // returns "dogs"
+//    callfunc("F_GetPlural","fox",1)  // returns "FOXES"
+//    callfunc("F_GetPlural","knife")  // returns "knives"
+//
+// Returns the plural of a noun if the given number is not 1.
+// -- callfunc "F_InsertPlural",<number>,"<noun>"{,<1:uppercase>}
+// Examples:
+//    callfunc("F_InsertPlural",1,"dog")    // returns "1 dog"
+//    callfunc("F_InsertPlural",3,"fox",1)  // returns "3 FOXES"
+//    callfunc("F_InsertPlural",0,"knife")  // returns "0 knives"
+//
+// NOTE: Nouns must be 3 or more characters in length.
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetPlural	{
+	set .@str$, getarg(0);
+	set .@strlen, getstrlen(.@str$);
+	setarray .@suffix$[0], charat(.@str$,.@strlen - 1), substr(.@str$,.@strlen - 2,.@strlen - 1);
+
+	// ends in -s, -x, -z, -ch, -sh --> add -es
+	if (.@suffix$[0] == "s" || .@suffix$[0] == "x" || .@suffix$[0] == "z" ||
+	    .@suffix$[1] == "ch" || .@suffix$[1] == "sh") {
+		set .@result$, .@str$ + "es";
+	}
+
+	// ends in -f, -fe --> remove -f, -fe --> add -ves
+	else if (.@suffix$[0] == "f" || .@suffix$[1] == "fe") {
+		if (compare("belief|cliff|chief|dwarf|grief|gulf|proof|roof",.@str$))
+			set .@result$, .@str$ + "s";  // exceptions --> add -s
+		else
+			set .@result$, substr(.@str$,0,.@strlen - 2 - (.@suffix$[1] == "fe")) + "ves";
+	}
+	
+	// ends in consonant + -y --> remove -y --> add -ies
+	else if (.@suffix$[0] == "y" && !(compare("aeiou",charat(.@suffix$[1],0)))) {
+		set .@result$, delchar(.@str$,.@strlen - 1) + "ies";
+	}
+
+	// ends in -o --> exceptions --> add -es
+	else if (.@suffix$[0] == "o" &&
+	         compare("buffalo|domino|echo|grotto|halo|hero|mango|mosquito|potato|tomato|tornado|torpedo|veto|volcano",.@str$)) {
+		set .@result$, .@str$ + "es";
+	}
+
+	// default --> add -s
+	else {
+		set .@result$, .@str$ + "s";
+	}
+
+	return ((getarg(1,0)) ? strtoupper(.@result$) : .@result$);
+}
+function	script	F_InsertPlural	{
+	return getarg(0) + " " + ((getarg(0) == 1) ? getarg(1) : callfunc("F_GetPlural",getarg(1),getarg(2,0)));
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Returns 'a' or 'an' based on a word - only follows basic rules, without exceptions!
+// -- callfunc "F_InsertArticle","<word>"{,<1:uppercase A>}
+// Examples:
+//    callfunc("F_InsertArticle","apple")  // returns "an apple"
+//    callfunc("F_InsertArticle","dog",1)  // returns "A dog"
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_InsertArticle	{
+	return ((getarg(1,0)) ? "A" : "a") + ((compare("aeiou", charat(getarg(0),0))) ? "n " : " ") + getarg(0);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Returns a number with commas between every three digits.
+// -- callfunc "F_InsertComma",<number>
+// Examples:
+//    callfunc("F_InsertComma",7777777)  // returns "7,777,777"
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_InsertComma	{
+	set .@str$, getarg(0);
+	for (set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3)
+		set .@str$, insertchar(.@str$,",",.@i);
+	return .@str$;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Returns a number with a '-st', '-nd', '-rd', or '-th' suffix.
+// -- callfunc "F_GetNumSuffix",<number>
+// Examples:
+//    callfunc("F_GetNumSuffix",1)   // returns "1st"
+//    callfunc("F_GetNumSuffix",11)  // returns "11th"
+//    callfunc("F_GetNumSuffix",32)  // returns "32nd"
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetNumSuffix	{
+	set .@n, getarg(0);
+	set .@mod, .@n % 10;
+	if (.@mod == 1 && .@n != 11) return .@n+"st";
+	else if (.@mod == 2 && .@n != 12) return .@n+"nd";
+	else if (.@mod == 3 && .@n != 13) return .@n+"rd";
+	else return getarg(0)+"th";
+}

+ 9 - 5
npc/other/card_trader.txt

@@ -111,18 +111,22 @@ prontera,115,90,0	script	Putty	90,{
 			for(set .@j,1; .@j<4; set .@j,.@j+1) {
 				for(set .@i,0; .@i<.card[.@j]; set .@i,.@i+1)
 					if (compare(.@input$,"_"+getitemname(getd(".card"+.@j+"["+.@i+"]")))) {
-						set .@card, getd(".card"+.@j+"["+.@i+"]"); break; }
+						set .@card, getd(".card"+.@j+"["+.@i+"]");
+						break;
+					}
 				sleep2 10; // For good measure
-				if (.@card) break; }
+				if (.@card) break;
+			}
 			freeloop(0);
 			mes "[Putty]";
 			if (!.@card) mes "Please, come back here if you want to exchange a monster card.";
 			else {
 				set .@count, countitem(.@card);
 				if (!.@count) {
-					mes "You don't have any ^0055FF"+getitemname(.@card)+"s^000000 with you!";
-					close; }
-				mes "You've got ^0055FF"+.@count+" "+getitemname(.@card)+((.@count>1)?"s":"")+"^000000.";
+					mes "You don't have any ^0055FF"+callfunc("F_GetPlural",getitemname(.@card))+"^000000 with you!";
+					close;
+				}
+				mes "You've got ^0055FF"+callfunc("F_InsertPlural",.@count,getitemname(.@card))+"^000000.";
 				mes " ";
 				mes "Would you like to exchange 1 point for each of them?";
 				next;

+ 10 - 14
npc/other/hugel_bingo.txt

@@ -860,17 +860,13 @@ function	script	Func_Bingo	{
 }
 
 function	script	Func_BingoResult	{
-	if (getarg(0) == 1 || getarg(0) == 21) set .@str$,"st";
-	else if (getarg(0) == 2 || getarg(0) == 22) set .@str$,"nd";
-	else if (getarg(0) == 3 || getarg(0) == 23) set .@str$,"rd";
-	else set .@str$,"th";
-	mapannounce "que_bingo","Eukran: The "+getarg(0)+.@str$+" number is "+$bingo[getarg(0) -1]+". Please check your Bingo Plate.",4,0xFFAB54;
-	enablenpc ""+getarg(0)+"a#bingo";
-	enablenpc ""+getarg(0)+"b#bingo";
-	enablenpc ""+getarg(0)+"c#bingo";
-	enablenpc ""+getarg(0)+"d#bingo";
-	enablenpc ""+getarg(0)+"e#bingo";
-	set getarg(0),getarg(0) +1;
+	mapannounce "que_bingo","Eukran: The "+callfunc("F_GetNumSuffix",getarg(0))+" number is "+$bingo[getarg(0) - 1]+". Please check your Bingo Plate.",4,0xFFAB54;
+	enablenpc getarg(0)+"a#bingo";
+	enablenpc getarg(0)+"b#bingo";
+	enablenpc getarg(0)+"c#bingo";
+	enablenpc getarg(0)+"d#bingo";
+	enablenpc getarg(0)+"e#bingo";
+	set $@bingoresult, $@bingoresult + 1;
 	end;
 }
 
@@ -953,7 +949,7 @@ que_bingo,54,17,5	script	Arcade Owner	712,{
 		mes "game, you will be rewarded";
 		mes "with ''Marvelous Medals,''";
 		mes "which can only be used within";
-		mes "this arcade. You also can't^FFFFFF ^000000 trade medals with other players.";
+		mes "this arcade. You also can't trade medals with other players.";
 		next;
 		mes "[Arcade Owner]";
 		mes "You usually get 1 Marvelous";
@@ -966,8 +962,8 @@ que_bingo,54,17,5	script	Arcade Owner	712,{
 		mes "[Arcade Owner]";
 		mes "Collect as many Marvelous";
 		mes "Medals as you can, and trade";
-		mes "them for products in the Monster^FFFFFF ^000000 Racing Arena. I hear there's also";
-		mes "a place in Einbroch where you can^FFFFFF ^000000 use them, but I wouldn't know.";
+		mes "them for products in the Monster Racing Arena. I hear there's also";
+		mes "a place in Einbroch where you can use them, but I wouldn't know.";
 		close;
 	}
 }

+ 1 - 1
npc/other/marriage.txt

@@ -829,7 +829,7 @@ S_Busy:
 	mes "I'm conducting a wedding";
 	mes "for another couple now, so";
 	mes "please wait patiently for your";
-	mes "turn. Thanks for understanding... ^FFFFFF ^000000";
+	mes "turn. Thanks for understanding...";
 	goto L_End;
 
 OnStop:

+ 3 - 4
npc/other/mercenary_rent.txt

@@ -39,9 +39,8 @@
 			mes "Which Grade were you";
 			mes "interested in hiring?";
 			next;
-			setarray .@suffix$, "th","st","nd","rd";
 			for (set .@i, 1; .@i <= 9; set .@i, .@i + 1)
-				set .@menu$, .@menu$ + .@i + .@suffix$[((.@i <= 3)? .@i : 0)] + " Grade " + .@npc$ + " Mercenary:";
+				set .@menu$, .@menu$ + callfunc("F_GetNumSuffix",.@i) + " Grade " + .@npc$ + " Mercenary:";
 			set .@Grade, select(.@menu$);
 			set .@BaseLevel, 5 + (.@Grade * 10);
 			set .@BaseLevel, (.@val > 90)? 90 : .@BaseLevel;
@@ -49,7 +48,7 @@
 			setarray .@FaithCost[7], 50,100,300;
 			set .@FaithCost, .@FaithCost[.@Grade];
 			mes "[Mercenary Manager]";
-			mes "So you want to hire a " + .@Grade + .@suffix$[((.@Grade <= 3)? .@i : 0)];
+			mes "So you want to hire a " + callfunc("F_GetNumSuffix",.@Grade);
 			mes "Grade " + .@npc$ + " Mercenary?";
 			mes "You need to have attained";
 			mes "Base Level " + .@BaseLevel + " or higher, and";
@@ -277,7 +276,7 @@ pay_arche,99,167,4	duplicate(Mercenary Manager#main)	Mercenary Manager#Bow	732
 		mes "Here's your " + getitemname(.@item[.@m]) + ".";
 	else {
 		mes "Here you are, this is exactly";
-		mes .@input + " " + getitemname(.@item[.@m]) + "s.";
+		mes callfunc("F_InsertPlural",.@input,getitemname(.@item[.@m])) + ".";
 	}
 	mes "Thank you, and please come";
 	mes "again when you need more";

+ 1 - 1
npc/other/monster_race.txt

@@ -295,7 +295,7 @@ OnTimer9000:
 	function	WN	{
 		set .@n, charat(strnpcinfo(0),getstrlen(strnpcinfo(0))-1);
 		if (!getarg(0)) return .@n;
-		return ((.@n <= 3)?((.@n == 1)?"1st":((.@n == 2)?"2nd":"3rd")):.@n+"th"); 
+		return callfunc("F_GetNumSuffix",.@n);
 	}
 	
 OnInit:

+ 2 - 2
npc/pre-re/guides/guides_comodo.txt

@@ -80,7 +80,7 @@ function	script	F_CmdGuide	{
 		mes "Please refer to the cross mark,";
 		mes "^3355FF+^000000, on your Mini-Map to find the";
 		mes "Tourist Shop where you can ";
-		mes "buy gifts that can only be found^FFFFFF ^000000 in the Comodo region~";
+		mes "buy gifts that can only be found in the Comodo region~";
 		close;
 	case 6:
 		viewpoint 1,136,202,5,0xFF5555;
@@ -88,7 +88,7 @@ function	script	F_CmdGuide	{
 		mes "^FF5555+^000000, on your Mini-Map to find the";
 		mes "Western branch of the Kafra";
 		mes "Corporation. They offer some";
-		mes "pretty important services that^FFFFFF ^000000 you may want to check out later.";
+		mes "pretty important services that you may want to check out later.";
 		close;
 	case 7:
 		viewpoint 1,114,294,5,0xFF5555;

+ 2 - 2
npc/quests/bunnyband.txt

@@ -40,7 +40,7 @@ alberta,26,229,0	script	Kafra Employee#bunny	83,{
 					mes "Ooh, I'm sorry";
 					mes "but you need to";
 					mes "bring at least";
-					mes .@Items[.@i+1]+" "+getitemname(.@Items[.@i])+((!.@i)?"s.":".");
+					mes callfunc("F_InsertPlural",.@Items[.@i+1],getitemname(.@Items[.@i]))+".";
 					close;
 				}
 			mes "[Kafra Employee]";
@@ -57,7 +57,7 @@ alberta,26,229,0	script	Kafra Employee#bunny	83,{
 					mes "Hm? I'm sorry,";
 					mes "but I actually can't";
 					mes "make this right now. You";
-					mes "need "+.@Items[.@i+1]+" "+getitemname(.@Items[.@i])+((!.@i)?"s":"");
+					mes "need "+callfunc("F_InsertPlural",.@Items[.@i+1],getitemname(.@Items[.@i]));
 					mes "in order for me to put this";
 					mes "Bunny Band together...";
 					close;

+ 9 - 9
npc/quests/dandelion_request.txt

@@ -226,7 +226,7 @@ izlude,103,106,3	script	Guildsman#1	48,3,3,{
 			mes "you'll need to meet with your";
 			mes "contact from the Assassin";
 			mes "Guild near a hut at the west";
-			mes "side of the Oasis inside Morroc.^FFFFFF ^000000 So keep an eye out for him.";
+			mes "side of the Oasis inside Morroc. So keep an eye out for him.";
 			next;
 			mes "[Guildsman]";
 			mes "I doubt you'll have";
@@ -4100,7 +4100,7 @@ que_job01,84,17,3	script	Lin#2-1	885,{
 		mes "If I can obtain that,";
 		mes "people would be able to";
 		mes "take Satan Morroc's threat";
-		mes "more seriously. And Thanatos^FFFFFF ^000000 Tower wouldn't be a tourist area.";
+		mes "more seriously. And Thanatos Tower wouldn't be a tourist area.";
 		next;
 		mes "[R. Moore]";
 		mes "I'm begging you, please";
@@ -4327,7 +4327,7 @@ que_job01,79,15,1	script	R	880,{
 		mes "attacked me because they";
 		mes "did not want me to repair";
 		mes "Morroc's elemental equilibrium.";
-		mes "At least, that's what I believe. ^FFFFFF ^000000";
+		mes "At least, that's what I believe.";
 		set mao_request,109;
 		next;
 		mes "[R. Moore]";
@@ -4369,7 +4369,7 @@ que_job01,79,15,1	script	R	880,{
 		mes "You should be able to find";
 		mes "the element regulation device";
 		mes "behind one of the pyramids in";
-		mes "the field west of Morroc. Please^FFFFFF ^000000";
+		mes "the field west of Morroc. Please";
 		mes "use an enchanted stone to";
 		mes "boost the crest's power.";
 		close2;
@@ -5003,7 +5003,7 @@ que_job01,91,83,3	script	Kidd#hall	884,{
 		mes "types of those elemental";
 		mes "stones. Anyway, you already";
 		mes "know where the west crest is.";
-		mes "The south crest is in the lowest^FFFFFF ^000000 part of the field south of Morroc.";
+		mes "The south crest is in the lowest part of the field south of Morroc.";
 		next;
 		mes "[Kidd]";
 		mes "As for the north and east";
@@ -5199,7 +5199,7 @@ que_job01,91,83,3	script	Kidd#hall	884,{
 		mes "are supposed to protect some";
 		mes "seal beneath Morroc Castle";
 		mes "that keeps this monster, Satan";
-		mes "Morroc, from invading our world.^FFFFFF ^000000 It might be just a legend, but...";
+		mes "Morroc, from invading our world. It might be just a legend, but...";
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "The assistant told me that";
@@ -5589,7 +5589,7 @@ que_job01,89,85,5	script	Dandelion Member	880,{
 				mes "Ah, so you already know";
 				mes "about us? I feel so ashamed...";
 				mes "We let that Raiyan Moore kidnap";
-				mes "the children that were entrusted^FFFFFF ^000000 to our care. I don't know if we";
+				mes "the children that were entrusted to our care. I don't know if we";
 				mes "can ever forgive ourselves.";
 				close2;
 				break;
@@ -5607,7 +5607,7 @@ que_job01,89,85,5	script	Dandelion Member	880,{
 				mes "streets, repair homes for";
 				mes "lower income households, and";
 				mes "even operated a day care center.";
-				mes "However, Raiyan Moore kidnapped^FFFFFF ^000000 all the children under our care...";
+				mes "However, Raiyan Moore kidnapped all the children under our care...";
 				next;
 				mes "[Dandelion Member]";
 				mes "I can only imagine the";
@@ -6147,7 +6147,7 @@ yuno_in04,180,106,3	script	Reading Girl	73,{
 		mes "the organized documents did";
 		mes "so on Mr. Moore's behalf. Then,";
 		mes "she quickly vanished before";
-		mes "I could ask her for her name or^FFFFFF ^000000 Mr. Moore's contact information.";
+		mes "I could ask her for her name or Mr. Moore's contact information.";
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "Damn! That information";

+ 21 - 21
npc/quests/doomed_swords.txt

@@ -37,8 +37,8 @@ prt_in,162,11,2	script	Ghatu#magum	86,{
 			mes "[Ghatu]";
 			mes "Rumor has it that he's";
 			mes "hiding in the mountains";
-			mes "since too many people want^FFFFFF ^000000 to use his talents for the wrong";
-			mes "purposes. Apparently, there is^FFFFFF ^000000 a godly quality to his weapons...";
+			mes "since too many people want to use his talents for the wrong";
+			mes "purposes. Apparently, there is a godly quality to his weapons...";
 			set event_magum,1;
 			close;
 		}
@@ -63,7 +63,7 @@ prt_in,162,11,2	script	Ghatu#magum	86,{
 		mes "That smith used to be";
 		mes "a pretty easy going guy";
 		mes "until he was forced to work";
-		mes "against his will. Slowly, he^FFFFFF ^000000 became gloomy and intimidating...";
+		mes "against his will. Slowly, he became gloomy and intimidating...";
 		next;
 		mes "[Ghatu]";
 		mes "But I suppose blacksmiths";
@@ -97,7 +97,7 @@ prt_in,162,11,2	script	Ghatu#magum	86,{
 		mes "That smith used to be";
 		mes "a pretty easy going guy";
 		mes "until he was forced to work";
-		mes "against his will. Slowly, he^FFFFFF ^000000 became gloomy and intimidating...";
+		mes "against his will. Slowly, he became gloomy and intimidating...";
 		next;
 		mes "[Ghatu]";
 		mes "But I suppose blacksmiths";
@@ -233,13 +233,13 @@ izlude_in,173,88,2	script	Nain#magum	102,{
 	mes "more criminals, the rage and";
 	mes "bloodlust of its victims began";
 	mes "to accumulate upon the blade.";
-	mes "Although the sword gained great^FFFFFF ^000000 strength, it was tainted by evil.";
+	mes "Although the sword gained great strength, it was tainted by evil.";
 	next;
 	mes "[Nain]";
 	mes "The last person to wield";
 	mes "the Executioner almost lost";
-	mes "his mind to the sword. He saved^FFFFFF ^000000 himself by giving it to a talented";
-	mes "blacksmith who would destroy^FFFFFF ^000000 it for him, thus saving his soul.";
+	mes "his mind to the sword. He saved himself by giving it to a talented";
+	mes "blacksmith who would destroy it for him, thus saving his soul.";
 	next;
 	mes "[Nain]";
 	mes "This mysterious blacksmith";
@@ -418,7 +418,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "[Mysterious Blacksmith]";
 					mes "Freyja suspected nothing and";
 					mes "told Loki about the secret of";
-					mes "Mysteltainn. The next time the^FFFFFF ^000000 gods played their game of throwing";
+					mes "Mysteltainn. The next time the gods played their game of throwing";
 					mes "objects at Baldur, Loki was there with a small Mysteltainn twig.";
 					next;
 					mes "[Mysterious Blacksmith]";
@@ -469,7 +469,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 				mes "I can tell that you don't know";
 				mes "enough about the Mysteltainn";
 				mes "to fully understand all of the";
-				mes "risks that come with wielding^FFFFFF ^000000 that sword. Yes, you're too green.";
+				mes "risks that come with wielding that sword. Yes, you're too green.";
 				next;
 				mes "[Mysterious Blacksmith]";
 				mes "I can't take the risk";
@@ -486,7 +486,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "wondering how such a small";
 					mes "dagger can contain such power.";
 					mes "It's simple. I cast forbidden";
-					mes "curse magic to inbue the dagger^FFFFFF ^000000 with its awesome destructiveness.";
+					mes "curse magic to inbue the dagger with its awesome destructiveness.";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "The curse I cast is so";
@@ -501,7 +501,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "fair to warn you that";
 					mes "the power of the curse";
 					mes "is such that the more you";
-					mes "use the Grimtooth, the more^FFFFFF ^000000 it burns away at your very soul...";
+					mes "use the Grimtooth, the more it burns away at your very soul...";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "I am willing to forge";
@@ -565,7 +565,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "I created this sword asked";
 					mes "me to destroy it, fearing that";
 					mes "it would corrupt his mind with";
-					mes "its bloodlust. But if you think^FFFFFF ^000000 you can endure, I may forge it...";
+					mes "its bloodlust. But if you think you can endure, I may forge it...";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "Just bring me...";
@@ -702,7 +702,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 						mes "You've forgotten";
 						mes "to bring ^0099FF1 Young Twig^000000,";
 						mes "the embodiment of the";
-						mes "Mysteltainn twig used to^FFFFFF ^000000 kill Baldur. Hurry and bring it...";
+						mes "Mysteltainn twig used to kill Baldur. Hurry and bring it...";
 						close;
 					}
 					if (countitem(7019) < 1) {
@@ -711,7 +711,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 						mes "^0099FF1 Loki's Whispers^000000. We need";
 						mes "that to imbue the sword with";
 						mes "immense, evil power. Go and";
-						mes "find that as quickly as you can! ^FFFFFF ^000000";
+						mes "find that as quickly as you can!";
 						close;
 					}
 					if (countitem(7020) < 1) {
@@ -719,7 +719,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 						mes "Hm, you still need to";
 						mes "bring ^0099FF1 Mother's Nightmare^000000";
 						mes "to instill the power of misery";
-						mes "and grave portent to this blade... ^FFFFFF ^000000";
+						mes "and grave portent to this blade...";
 						close;
 					}
 					if (countitem(7021) < 1) {
@@ -728,7 +728,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 						mes "bring ^0099FF1 Foolishness";
 						mes "of the Blind^000000 to instill the";
 						mes "energy of tragic regret into";
-						mes "the curse imbued into the blade... ^FFFFFF ^000000";
+						mes "the curse imbued into the blade...";
 						close;
 					}
 					if (countitem(714) < 1) {
@@ -834,7 +834,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "[Mysterious Blacksmith]";
 					mes "Freyja suspected nothing and";
 					mes "told Loki about the secret of";
-					mes "Mysteltainn. The next time the^FFFFFF ^000000 gods played their game of throwing";
+					mes "Mysteltainn. The next time the gods played their game of throwing";
 					mes "objects at Baldur, Loki was there with a small Mysteltainn twig.";
 					next;
 					mes "[Mysterious Blacksmith]";
@@ -884,7 +884,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 				mes "Mysteltainn, I advise you";
 				mes "to learn more about it. You";
 				mes "must know the risks involved";
-				mes "in wielding that sort of power... ^FFFFFF ^000000";
+				mes "in wielding that sort of power...";
 				close;
 			case 2:
 				if (dmdswrd_Q2 & 16) {
@@ -982,7 +982,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "wondering how such a small";
 					mes "dagger can contain such power.";
 					mes "It's simple. I cast forbidden";
-					mes "curse magic to inbue the dagger^FFFFFF ^000000 with its awesome destructiveness.";
+					mes "curse magic to inbue the dagger with its awesome destructiveness.";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "The curse I cast is so";
@@ -997,7 +997,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "fair to warn you that";
 					mes "the power of the curse";
 					mes "is such that the more you";
-					mes "use the Grimtooth, the more^FFFFFF ^000000 it burns away at your very soul...";
+					mes "use the Grimtooth, the more it burns away at your very soul...";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "I am willing to forge";
@@ -1137,7 +1137,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 					mes "I created this sword asked";
 					mes "me to destroy it, fearing that";
 					mes "it would corrupt his mind with";
-					mes "its bloodlust. But if you think^FFFFFF ^000000 you can endure, I may forge it...";
+					mes "its bloodlust. But if you think you can endure, I may forge it...";
 					next;
 					mes "[Mysterious Blacksmith]";
 					mes "Just bring me...";

+ 2 - 2
npc/quests/doomed_swords_quest.txt

@@ -842,7 +842,7 @@ morocc,248,159,4	script	Young Man#magum1	86,{
 		mes "appreciate it, but this";
 		mes "pentagram has really good";
 		mes "craftsmanship! Now, if my";
-		mes "older brothers have already^FFFFFF ^000000 helped you, I shall do the same.";
+		mes "older brothers have already helped you, I shall do the same.";
 		next;
 		mes "[Huey]";
 		mes "My older brothers are even";
@@ -856,7 +856,7 @@ morocc,248,159,4	script	Young Man#magum1	86,{
 		mes "would have been for nothing.";
 		mes "And then... They might just";
 		mes "come looking for me. Morf";
-		mes "especially. Oh, right! Materials!^FFFFFF ^000000 I need these for the pentagram!";
+		mes "especially. Oh, right! Materials! I need these for the pentagram!";
 		next;
 		mes "[Huey]";
 		mes "Please bring me";

+ 1 - 1
npc/quests/partyrelay.txt

@@ -285,7 +285,7 @@ payon,103,113,3	script	Ledrion#payon::RelayLedrion	109,{
 	mes "a meaningful contribution";
 	mes "to all of Rune Midgard, which";
 	mes "brings me to why I am here.";
-	mes "There are many adventurers^FFFFFF ^000000 like you, but we have a problem.";
+	mes "There are many adventurers like you, but we have a problem.";
 	next;
 	mes "[Ledrion]";
 	mes "So many adventurers have";

+ 26 - 26
npc/quests/quests_comodo.txt

@@ -534,8 +534,8 @@ comodo,206,310,4	script	Campground Boy#cmd	704,{
 		mes "[Rochito]";
 		mes "Long before Comodo was";
 		mes "built inside this huge cave,";
-		mes "this witch used to live in here.^FFFFFF ^000000 A lot of people died trying to";
-		mes "get rid of her, but there're^FFFFFF ^000000 rumors that she's still around...";
+		mes "this witch used to live in here. A lot of people died trying to";
+		mes "get rid of her, but there're rumors that she's still around...";
 		break;
 	case 1:
 		mes "[Rochito]";
@@ -690,7 +690,7 @@ comodo,204,310,4	script	Camping Youth#cmd	65,{
 		mes "that wine to Tausupa, the";
 		mes "Village Chief, would you let";
 		mes "him know that we miss the guy?";
-		mes "He may be busy, but he'll always^FFFFFF ^000000 be our irreplaceable buddy.";
+		mes "He may be busy, but he'll always be our irreplaceable buddy.";
 		break;
 	case 4:
 		mes "[Rockha]";
@@ -732,7 +732,7 @@ comodo,204,310,4	script	Camping Youth#cmd	65,{
 		mes "would make our barbeque";
 		mes "absolutely perfect--having";
 		mes "the Village Chief here, and";
-		mes "some of that legendary Comodo^FFFFFF ^000000 Cheese that ^3355FFToruna^000000 told me about.";
+		mes "some of that legendary Comodo Cheese that ^3355FFToruna^000000 told me about.";
 		break;
 	}
 	close;
@@ -1005,8 +1005,8 @@ cmd_in02,32,140,4	script	Chief#cmd	49,{
 		mes "[Tausupa]";
 		mes "Greetings, adventurer,";
 		mes "I am Tausupa, the Chief of";
-		mes "Comodo, a city famous for its^FFFFFF ^000000 beauty and nightlife. I hope you";
-		mes "enjoy your stay, whether you are^FFFFFF ^000000 seeking excitement or relaxation~";
+		mes "Comodo, a city famous for its beauty and nightlife. I hope you";
+		mes "enjoy your stay, whether you are seeking excitement or relaxation~";
 		next;
 		switch(select("About Casino:About Banished Witch:Cancel")) {
 		case 1:
@@ -1015,7 +1015,7 @@ cmd_in02,32,140,4	script	Chief#cmd	49,{
 			mes "famous for its Casino. There";
 			mes "are many games that you can";
 			mes "enjoy, but you'll need to use";
-			mes "the Casino's special Eulwo^FFFFFF ^000000 currency and conversion system...";
+			mes "the Casino's special Eulwo currency and conversion system...";
 			break;
 		case 2:
 			switch (dmdswrd_Q) {
@@ -1033,7 +1033,7 @@ cmd_in02,32,140,4	script	Chief#cmd	49,{
 				mes "of BBQ meat on your clothes,";
 				mes "I'm guessing that you ran into";
 				mes "Rochito in the campgrounds, ";
-				mes "right? He must have told you^FFFFFF ^000000 that old story about the witch...";
+				mes "right? He must have told you that old story about the witch...";
 				next;
 				mes "[Tausupa]";
 				mes "I'd like nothing better";
@@ -1067,7 +1067,7 @@ cmd_in02,32,140,4	script	Chief#cmd	49,{
 				mes "Koserserah seasoning to";
 				mes "my friend ^3355FFRochito^000000 at the";
 				mes "barbeque campground. Thanks";
-				mes "again for your help, adventurer. ^FFFFFF ^000000";
+				mes "again for your help, adventurer.";
 				break;
 			}
 			break;
@@ -1142,7 +1142,7 @@ comodo,88,97,4	script	Toruna#cmd	109,{
 			mes "Yes, that is rather";
 			mes "peculiar. What's also";
 			mes "strange is this rumor I've";
-			mes "been hearing about. Now, are^FFFFFF ^000000 you familiar with Comodo Cheese?";
+			mes "been hearing about. Now, are you familiar with Comodo Cheese?";
 			next;
 			mes "[Toruna]";
 			mes "It's this urban legend";
@@ -1191,7 +1191,7 @@ comodo,88,97,4	script	Toruna#cmd	109,{
 			mes "before it was an exotic";
 			mes "village of excitement and";
 			mes "leisure, Comodo was once";
-			mes "a haven for evil creatures, ruled^FFFFFF ^000000 by a witch named Meropusum?";
+			mes "a haven for evil creatures, ruled by a witch named Meropusum?";
 			next;
 			mes "[Toruna]";
 			mes "This witch lay dormant for";
@@ -1303,7 +1303,7 @@ comodo,169,284,4	script	Kichiri#cmd	98,{
 		mes "got me wondering! I mean,";
 		mes "just because I've never seen";
 		mes "Comodo Cheese doesn't mean";
-		mes "it doesn't exist, right? Curses!^FFFFFF ^000000 Now I'm thinking about it too!";
+		mes "it doesn't exist, right? Curses! Now I'm thinking about it too!";
 		break;
 	default:
 		mes "[Kichiri]";
@@ -1434,7 +1434,7 @@ cmd_in02,189,99,4	script	Manzi#cmd	85,{
 		mes "Ah, she won't take you";
 		mes "very seriously unless you";
 		mes "show her this. Magatsu gave";
-		mes "you his lucky bottle cap, so I'm^FFFFFF ^000000 gonna give you my lucky coin!";
+		mes "you his lucky bottle cap, so I'm gonna give you my lucky coin!";
 		mes "The old crone'll recognize it~";
 		next;
 		set dmdswrd_Q,10;
@@ -1467,7 +1467,7 @@ cmd_in02,189,99,4	script	Manzi#cmd	85,{
 		mes "Hey, have a good time in";
 		mes "the Casino, but don't go buck";
 		mes "wild. You wanna walk out of";
-		mes "here with the shirt on your back,^FFFFFF ^000000 you know? Some people don't";
+		mes "here with the shirt on your back, you know? Some people don't";
 		mes "even leave here with that...";
 		break;
 	}
@@ -1524,7 +1524,7 @@ comodo,187,153,4	script	Hullaris#cmd	701,{
 			mes "Comodo Cheese does exist,";
 			mes "and it's as precious as the";
 			mes "legends say. However, it's";
-			mes "not a true cheese, although^FFFFFF ^000000 you may think so from its taste.";
+			mes "not a true cheese, although you may think so from its taste.";
 			next;
 			mes "[Hullaris]";
 			mes "Yes, it's a very rare, natural";
@@ -1750,7 +1750,7 @@ beach_dun3,30,220,4	script	Nigirboran#cmd	704,{
 		mes "I'd expect nothing less of";
 		mes "a brave and daring adventurer.";
 		mes "Now hold still as I gauge your";
-		mes "body's internal energies and see^FFFFFF ^000000 if it can handle Comodo Cheese...";
+		mes "body's internal energies and see if it can handle Comodo Cheese...";
 		next;
 		mes "[Nigirboran]";
 		mes "Alright.";
@@ -1847,7 +1847,7 @@ beach_dun3,30,220,4	script	Nigirboran#cmd	704,{
 				mes "but I do know that you'll need";
 				mes "the ^3355FFAwakening Stone^000000, the ^3355FFBook^000000";
 				mes "^3355FFof the Lamb^000000 and the ^3355FFSlate of^000000";
-				mes "^3355FFMurniel^000000 to even have a chance^FFFFFF ^000000 of obtaining one of those swords.";
+				mes "^3355FFMurniel^000000 to even have a chance of obtaining one of those swords.";
 				next;
 				mes "[Nigirboran]";
 				mes "Let's see... After you";
@@ -2042,7 +2042,7 @@ aldebaran,44,53,4	script	Meteurengut#cmd	64,{
 			mes "sooner, but I need to prepare";
 			mes "all of these stones, and I need";
 			mes "the freshest Cobwebs I can get.";
-			mes "I'll make sure that these stones^FFFFFF ^000000 are ready when you return.";
+			mes "I'll make sure that these stones are ready when you return.";
 			close;
 		}
 		mes "[Meteurengut]";
@@ -2101,14 +2101,14 @@ aldebaran,44,53,4	script	Meteurengut#cmd	64,{
 			mes "that artifact, and its secrets";
 			mes "are as well guarded as that of";
 			mes "the Slate of Muriniel. However,";
-			mes "I do know that a man in Morroc^FFFFFF ^000000 can create the Book of the Lamb...";
+			mes "I do know that a man in Morroc can create the Book of the Lamb...";
 			next;
 			mes "[Meteurengut]";
 			mes "If that man is still in";
 			mes "Morroc, then he will probably";
 			mes "recognize the subtle emanation";
 			mes "of the Awakening Stone and the";
-			mes "Slate of Muriniel from you. Best^FFFFFF ^000000 of luck to you, adventurer...";
+			mes "Slate of Muriniel from you. Best of luck to you, adventurer...";
 			close;
 		}
 		mes "[Meteurengut]";
@@ -2147,7 +2147,7 @@ aldebaran,44,53,4	script	Meteurengut#cmd	64,{
 		next;
 		mes "[Meteurengut]";
 		mes "I'm responsible for guarding";
-		mes "the secrets of its creation, but^FFFFFF ^000000 I must also share the power";
+		mes "the secrets of its creation, but I must also share the power";
 		mes "of the slate with those that";
 		mes "prove themselves worthy of it.";
 		next;
@@ -2179,7 +2179,7 @@ morocc,201,30,4	script	Zaka#cmd	99,{
 		mes "those that seek to own one";
 		mes "of the doomed swords would";
 		mes "trouble themselve to obtain";
-		mes "those items. All that is left for^FFFFFF ^000000 you is the Book of the Lamb...";
+		mes "those items. All that is left for you is the Book of the Lamb...";
 		next;
 		mes "[Zaka]";
 		mes "I've been waiting for so";
@@ -2371,7 +2371,7 @@ morocc,201,30,4	script	Zaka#cmd	99,{
 		mes "Ogretooth, and Executioner";
 		mes "have all been sealed away.";
 		mes "Only a truly great adventurer";
-		mes "can release these doomed^FFFFFF ^000000 swords and actually wield them...";
+		mes "can release these doomed swords and actually wield them...";
 		break;
 	}
 	close;
@@ -2392,7 +2392,7 @@ comodo,232,87,4	script	Won#cmd	106,{
 		mes "presenses of the Book of the";
 		mes "Lamb, the Slate of Muriniel,";
 		mes "and one that has eaten of the";
-		mes "Awakening Stone are unmistakable. ^FFFFFF ^000000";
+		mes "Awakening Stone are unmistakable.";
 		next;
 		mes "[Won]";
 		mes "Now, listen. I personally";
@@ -2415,7 +2415,7 @@ comodo,232,87,4	script	Won#cmd	106,{
 		mes "a look into your eyes...";
 		mes "Yeah, alright. You seem to";
 		mes "understand the value of the";
-		mes "Awakening Stone, Book of the^FFFFFF ^000000 Lamb, and the Slate of Muriniel.";
+		mes "Awakening Stone, Book of the Lamb, and the Slate of Muriniel.";
 		next;
 		mes "[Won]";
 		mes "Yeah, I can't sense any";
@@ -2498,7 +2498,7 @@ comodo,232,87,4	script	Won#cmd	106,{
 		mes "Comodo can afford to relax";
 		mes "so easily. I, for one, have";
 		mes "the responsibility of seeking";
-		mes "out those that are worthy of,^FFFFFF ^000000 well, I don't know if I can say...";
+		mes "out those that are worthy of, well, I don't know if I can say...";
 		next;
 		mes "[Won]";
 		mes "You just have to";

+ 57 - 57
npc/quests/quests_hugel.txt

@@ -47,14 +47,14 @@ hu_in01,387,245,0	script	Allen Schuwell	849,2,2,{
 			mes "I've got. He used to be such";
 			mes "a good obedient kid, but now";
 			mes "I doubt whether he cares about";
-			mes "his father! I told that lazy kid^FFFFFF ^000000 to hurry and bring me my meds...";
+			mes "his father! I told that lazy kid to hurry and bring me my meds...";
 			next;
 			mes "[Allen]";
 			mes "But does he worry about";
 			mes "his father's suffering?! No!";
 			mes "I bet you he's hanging out with";
 			mes "his no good hoodlum friends!";
-			mes "Argh! The pain is getting worse!^FFFFFF ^000000 I... I need my medication!";
+			mes "Argh! The pain is getting worse! I... I need my medication!";
 			next;
 			mes "[Allen]";
 			mes "Oh! I can definitely feel";
@@ -172,7 +172,7 @@ hu_in01,387,245,0	script	Allen Schuwell	849,2,2,{
 					mes "Wh-what if I have another";
 					mes "ulcer attack before Postell";
 					mes "can bring my meds?! I might";
-					mes "not survive! A-adventurer, would^FFFFFF ^000000 you please stay by my side until";
+					mes "not survive! A-adventurer, would you please stay by my side until";
 					mes "my son arrives? P-please?";
 					next;
 					set hg_herb,3;
@@ -997,7 +997,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "[Morriphen]";
 		mes "You're such a kind person...";
 		mes "You save my life and my wife's";
-		mes "life. I'll do anything you ask me^FFFFFF ^000000 to do to repay you! Consider me";
+		mes "life. I'll do anything you ask me to do to repay you! Consider me";
 		mes "your humble servant from now on. What is your command, oh master?";
 		next;
 		mes "["+strcharinfo(0)+"]";
@@ -1042,7 +1042,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "since childhood. We did almost";
 		mes "everything together. Even when";
 		mes "we started our professional";
-		mes "careers, we both decided to work^FFFFFF ^000000 for the Rekenber Corporation.";
+		mes "careers, we both decided to work for the Rekenber Corporation.";
 		next;
 		mes "[Morriphen]";
 		mes "Dono eventually became in";
@@ -1070,7 +1070,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "[Morriphen]";
 		mes "He told me not to be so";
 		mes "curious, but I didn't listen.";
-		mes "Ever since then, I went to his^FFFFFF ^000000 office as often as I could, making";
+		mes "Ever since then, I went to his office as often as I could, making";
 		mes "stupid excuses to see her. I just couldn't help it. I was in love.";
 		next;
 		mes "[Morriphen]";
@@ -1085,7 +1085,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "There was a snowstorm";
 		mes "that night, but I braved the";
 		mes "freezing cold to sneak into the";
-		mes "Rekenber Laboratory. I broke her^FFFFFF ^000000 out of her test tube, set the lab";
+		mes "Rekenber Laboratory. I broke her out of her test tube, set the lab";
 		mes "on fire, and got the hell out.";
 		next;
 		mes "[Morriphen]";
@@ -1109,7 +1109,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "man right before I fainted. He";
 		mes "said something about bringing";
 		mes "us to Hugel, a resting place";
-		mes "for the lost, those born from^FFFFFF ^000000 Odin's shadow. It was strange...";
+		mes "for the lost, those born from Odin's shadow. It was strange...";
 		next;
 		mes "[Morriphen]";
 		mes "I couldn't see his face.";
@@ -1124,7 +1124,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "accomdating, welcome, and";
 		mes "friendly. They also didn't";
 		mes "ask us any questions: we were";
-		mes "just accepted. The girl I saved^FFFFFF ^000000 didn't know how to speak then...";
+		mes "just accepted. The girl I saved didn't know how to speak then...";
 		next;
 		mes "[Morriphen]";
 		mes "As soon as I got better,";
@@ -1151,7 +1151,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "You know, Siria was supposed";
 		mes "to become a mass murder weapon.";
 		mes "The reason why Dono's experiment failed was became she resisted";
-		mes "their plans. She's more than just^FFFFFF ^000000 an experiment or weapon, you know.";
+		mes "their plans. She's more than just an experiment or weapon, you know.";
 		next;
 		mes "[Morriphen]";
 		mes "If everything had turned out";
@@ -1161,7 +1161,7 @@ ein_in01,16,36,3	script	Morriphen	86,{
 		mes "cutting edge weapons at the pinnacle of military development.";
 		next;
 		mes "[Morriphen]";
-		mes "While I was working for Rekenber,^FFFFFF ^000000 I was working on mass producing";
+		mes "While I was working for Rekenber, I was working on mass producing";
 		mes "imitations of the legendary sword, ''Executioner.'' They wouldn't be";
 		mes "perfect copies, but imagine what would've happened if I succeeded.";
 		next;
@@ -1485,7 +1485,7 @@ lighthalzen,88,79,7	script	Dono	85,{
 		mes "[Dono]";
 		mes "I have the medicine, but it's";
 		mes "not enough for one person, much";
-		mes "less the two of them. I need you^FFFFFF ^000000 to help me make some more.";
+		mes "less the two of them. I need you to help me make some more.";
 		mes "Now, listen carefully, these";
 		mes "are the ingredients I need...";
 		next;
@@ -1524,7 +1524,7 @@ lighthalzen,88,79,7	script	Dono	85,{
 		mes "I know I'm pushing you";
 		mes "hard, but I've got no choice.";
 		mes "If you don't hurry, then";
-		mes "those two will die, simple^FFFFFF ^000000 as that. I'll wait for you here.";
+		mes "those two will die, simple as that. I'll wait for you here.";
 		set hg_bio,3;
 		changequest 11010,11011;
 		close;
@@ -1582,7 +1582,7 @@ lighthalzen,88,79,7	script	Dono	85,{
 			mes "[Dono]";
 			mes "Go to the Lighthalzen";
 			mes "Makkie. Tell him I sent you";
-			mes "to get some Red Plant Stem^FFFFFF ^000000 Powder for Morriphen's medicine.";
+			mes "to get some Red Plant Stem Powder for Morriphen's medicine.";
 			next;
 			mes "[Dono]";
 			mes "Look, I know it's a pain,";
@@ -1624,7 +1624,7 @@ lighthalzen,88,79,7	script	Dono	85,{
 		mes "to find Makkie inside the";
 		mes "pub across the street. Hurry";
 		mes "up and bring me some Red";
-		mes "Plant Stem Power from him.^FFFFFF ^000000 Come on, Morriphen's in trouble!";
+		mes "Plant Stem Power from him. Come on, Morriphen's in trouble!";
 		close;
 	} else if (hg_bio == 5) {
 		mes "[Dono]";
@@ -1752,7 +1752,7 @@ lhz_in03,193,28,3	script	Makkie	83,{
 		mes "it to prepare medicine for";
 		mes "Morriphen and Siria, am";
 		mes "I right? Okay, just give me";
-		mes "a moment. While you're waiting,^FFFFFF ^000000 go ahead and relax, look around...";
+		mes "a moment. While you're waiting, go ahead and relax, look around...";
 		next;
 		mes "^3355FFMakkie sifted the powder";
 		mes "into a bag for you, you see";
@@ -1795,7 +1795,7 @@ lhz_in03,193,28,3	script	Makkie	83,{
 		mes "up at our current jobs.";
 		mes "Strangely enough, Morriphen";
 		mes "disappeared at the same time.";
-		mes "I don't know what happened to^FFFFFF ^000000 him since our days at Rekenber...";
+		mes "I don't know what happened to him since our days at Rekenber...";
 		next;
 		mes "[Makkie]";
 		mes "Anyway, when Morriphen";
@@ -4270,7 +4270,7 @@ hugel,191,172,3	script	Manainne	892,1,{
 		mes "I used to get along when";
 		mes "he dated my older sister,";
 		mes "Kanainne. In fact, they'd";
-		mes "always spend time together^FFFFFF ^000000 right under that tree. Weird, huh?";
+		mes "always spend time together right under that tree. Weird, huh?";
 		next;
 		mes "[Manainne]";
 		mes "Then, well, Kanainne";
@@ -4439,13 +4439,13 @@ hugel,191,172,3	script	Manainne	892,1,{
 		mes "[Manainne]";
 		mes "''In my dream, your";
 		mes "eyes held the reflection";
-		mes "of the ocean's clear waters...^FFFFFF ^000000 Someday I'll show them to you.''";
+		mes "of the ocean's clear waters... Someday I'll show them to you.''";
 		next;
 		mes "[Manainne]";
 		mes "''Your lovely face,";
 		mes "your enticing smile...";
 		mes "They're forever be in my";
-		mes "heart, so I'll never be lonely.'' ^FFFFFF ^000000";
+		mes "heart, so I'll never be lonely.''";
 		next;
 		mes "[El Schatt]";
 		mes "Manainne...";
@@ -4604,8 +4604,8 @@ hugel,100,103,3	script	Perfitz	866,{
 		mes "[Perfitz]";
 		mes "It's funny how things";
 		mes "change. You know, El Schatt";
-		mes "actually used to protest against^FFFFFF ^000000 my idea of building shops in the";
-		mes "area when that tree grows. Hmm...^FFFFFF ^000000 I wonder, what happened to him?";
+		mes "actually used to protest against my idea of building shops in the";
+		mes "area when that tree grows. Hmm... I wonder, what happened to him?";
 		close;
 	} else {
 		mes "[Perfitz]";
@@ -4656,7 +4656,7 @@ hugel,196,164,3	script	El Schatt	50,{
 		mes "[El Schatt]";
 		mes "My father's been wanting to";
 		mes "build a shop here for so long,";
-		mes "and now, I think it's about time.^FFFFFF ^000000 And this business will help the";
+		mes "and now, I think it's about time. And this business will help the";
 		mes "entire community. We should've";
 		mes "done this a long time ago...";
 		next;
@@ -4700,7 +4700,7 @@ hugel,196,164,3	script	El Schatt	50,{
 		mes "to think differently...";
 		mes "I'd protect that old tree";
 		mes "with my life, I won't deny";
-		mes "it. But that's an old story that^FFFFFF ^000000 should be buried in the past...";
+		mes "it. But that's an old story that should be buried in the past...";
 		changequest 8060,8061;
 		close;
 	} else if (hg_memory == 5) {
@@ -5045,7 +5045,7 @@ hugel,107,67,3	script	Torpy	706,{
 			mes "I'm older to have a girlfriend.";
 			mes "I mean, what if the girl I pick";
 			mes "now gets uglier when she";
-			mes "grows up? Or what if she gets^FFFFFF ^000000 really fat? I better be careful...";
+			mes "grows up? Or what if she gets really fat? I better be careful...";
 			next;
 			mes "^3355FFTorpy is still a young,";
 			mes "naive child that has much";
@@ -5503,7 +5503,7 @@ hu_in01,15,372,3	script	Cellette Lavit	74,{
 			mes "[Cellette]";
 			mes "Oh, thank you so much!";
 			mes "You can't imagine how busy";
-			mes "I've been, and how much I need^FFFFFF ^000000 the help! Now, let's get started~";
+			mes "I've been, and how much I need the help! Now, let's get started~";
 			next;
 			switch(rand(1,4)) {
 			case 1:
@@ -5512,7 +5512,7 @@ hu_in01,15,372,3	script	Cellette Lavit	74,{
 				mes "order of Fish Cake Soup to";
 				mes "my friend Neha. I'm grateful";
 				mes "that she's a regular customer--";
-				mes "she's a good friend, but I'm sure^FFFFFF ^000000 that she loves the soup as well.";
+				mes "she's a good friend, but I'm sure that she loves the soup as well.";
 				set hg_odeng,1;
 				setquest 8064;
 				getitem 584,1; //Fish_Ball_Soup
@@ -5523,7 +5523,7 @@ hu_in01,15,372,3	script	Cellette Lavit	74,{
 				mes "of Fish Cake Soup to Maewan,";
 				mes "another one of my regulars.";
 				mes "He's been buying my soup ever";
-				mes "since I helped him start his^FFFFFF ^000000 business. Nice of him, isn't it?";
+				mes "since I helped him start his business. Nice of him, isn't it?";
 				set hg_odeng,2;
 				setquest 8065;
 				getitem 584,1; //Fish_Ball_Soup 
@@ -5732,7 +5732,7 @@ hu_in01,15,372,3	script	Cellette Lavit	74,{
 			mes "leave now and deliver";
 			mes "that Fish Cake Soup to";
 			mes "Erjan before he can think";
-			mes "of something to complain about.^FFFFFF ^000000 Although it's probably too late...";
+			mes "of something to complain about. Although it's probably too late...";
 			close;
 		} else {
 			mes "[Cellette]";
@@ -5912,7 +5912,7 @@ hugel,87,139,3	script	Maewan	86,{
 			mes "Oh, finally, I've been";
 			mes "waiting for my order of";
 			mes "Fish Cake Soup from Cellette!";
-			mes "Aaaah, it smells oh so delicious~ ^FFFFFF ^000000";
+			mes "Aaaah, it smells oh so delicious~";
 			next;
 			mes "[Maewan]";
 			mes "Argh, but you're late!";
@@ -6026,7 +6026,7 @@ hugel,84,125,3	script	Layoma	700,{
 			mes "count on you to work";
 			mes "for my roommate Cellette";
 			mes "a little while longer. Oh, and";
-			mes "please tell her to not to come^FFFFFF ^000000 home so late all the time, okay?";
+			mes "please tell her to not to come home so late all the time, okay?";
 			delitem 921,1; //Mushroom_Spore
 			delitem 584,1; //Fish_Ball_Soup
 			set hg_odeng,10;
@@ -6061,7 +6061,7 @@ hugel,102,161,3	script	Erjan	100,{
 			mes "never come to deliver";
 			mes "my Fish Cake Soup. You're";
 			mes "awfully late, you know that?";
-			mes "Still, the smell is just so^FFFFFF ^000000 appetizing, I can barely resist...";
+			mes "Still, the smell is just so appetizing, I can barely resist...";
 			next;
 			mes "[Erjan]";
 			mes "Hm, but as the first son";
@@ -6273,7 +6273,7 @@ yuno,111,156,3	script	Euslan	90,{
 			mes "My fiancee was planning on";
 			mes "searching the Schwaltzvalt";
 			mes "Republic, so maybe the crewmen";
-			mes "on the Schwaltzvalt Republic^FFFFFF ^000000 domestic flights might know him.";
+			mes "on the Schwaltzvalt Republic domestic flights might know him.";
 			next;
 			mes "[Euslan]";
 			mes "If you manage to find";
@@ -6342,7 +6342,7 @@ yuno,111,156,3	script	Euslan	90,{
 			mes "My fiancee was planning on";
 			mes "searching the Schwaltzvalt";
 			mes "Republic, so maybe the crewmen";
-			mes "on the Schwaltzvalt Republic^FFFFFF ^000000 domestic flights might know him.";
+			mes "on the Schwaltzvalt Republic domestic flights might know him.";
 			next;
 			mes "[Euslan]";
 			mes "If you manage to find";
@@ -6419,7 +6419,7 @@ yuno,111,156,3	script	Euslan	90,{
 		mes "please visit my brother";
 		mes "Eukran in Hugel, and ask";
 		mes "him where my Thierry might be.";
-		mes "Thank you again for your kindness. ^FFFFFF ^000000";
+		mes "Thank you again for your kindness.";
 		close;
 	} else if (hg_ma1 == 8 || hg_ma1 == 9 || hg_ma1 == 10 || hg_ma1 == 11) {
 		mes "^3355FFEuslan is waiting for";
@@ -6446,7 +6446,7 @@ yuno,111,156,3	script	Euslan	90,{
 		mes "such a wonderful man. Why";
 		mes "did that silly fool go through";
 		mes "so much trouble for a useless";
-		mes "woman like me. *Cough* I still^FFFFFF ^000000 don't understand it... I don't...";
+		mes "woman like me. *Cough* I still don't understand it... I don't...";
 		next;
 		mes "[Euslan]";
 		mes "Thank you so much for";
@@ -6540,7 +6540,7 @@ que_bingo,53,190,7	script	Eukran	778,{
 		mes "there that can help my";
 		mes "sister recover. Why else";
 		mes "would Thierry go to such a";
-		mes "dangerous place? No one goes^FFFFFF ^000000 to the Odin Shrine for no reason.";
+		mes "dangerous place? No one goes to the Odin Shrine for no reason.";
 		close2;
 		set hg_ma1,8;
 		changequest 8047,8048;
@@ -6762,7 +6762,7 @@ odin_tem01,130,134,4	script	Young Man#Hu_Quest	774,{
 		mes "been using their guardians to";
 		mes "gather the ingredients needed";
 		mes "for my fiancee's medicine. But";
-		mes "if they're planning to get rid of^FFFFFF ^000000 me, I've just run out of time.";
+		mes "if they're planning to get rid of me, I've just run out of time.";
 		next;
 		mes "[Thierry]";
 		mes "It doesn't matter what";
@@ -6869,7 +6869,7 @@ OnTouch:
 		mes "[Suspicious Man]";
 		mes "Thierry seems to have";
 		mes "caught on to what we're";
-		mes "really up to. I think that's why^FFFFFF ^000000 he's slowing down on his";
+		mes "really up to. I think that's why he's slowing down on his";
 		mes "research. We better get rid";
 		mes "of him before it's too late.";
 		next;
@@ -7240,7 +7240,7 @@ hu_fild06,217,270,3	script	Burupu	896,3,3,{
 		mes "Airship landed in our";
 		mes "town, and I saw all those";
 		mes "Swordmen, I knew it'd be";
-		mes "my destiny! Forget ranching,^FFFFFF ^000000 I'm gonna wield a frickin' sword!";
+		mes "my destiny! Forget ranching, I'm gonna wield a frickin' sword!";
 		set hg_milk,4;
 		close;
 	} else if (hg_milk == 4) {
@@ -7257,7 +7257,7 @@ hu_fild06,217,270,3	script	Burupu	896,3,3,{
 		mes "Booboo the cow if you can get";
 		mes "me some proper Swordman";
 		mes "equipment. Let's see... Why not";
-		mes "give me 1 Rapier with 2 Slots?^FFFFFF ^000000 That's not too much to ask, right?";
+		mes "give me 1 Rapier with 2 Slots? That's not too much to ask, right?";
 		next;
 		switch(select("Alright.:Whoa, that's too much!")) {
 			case 1:
@@ -7313,7 +7313,7 @@ hu_fild06,217,270,3	script	Burupu	896,3,3,{
 		mes "I hid my secret instructions";
 		mes "for milking Booboo the cow";
 		mes "under the ground just northeast";
-		mes "of her. Read them carefully, and^FFFFFF ^000000 you should be able to milk her";
+		mes "of her. Read them carefully, and you should be able to milk her";
 		mes "yourself. You can do it, right?";
 		next;
 		mes "[Burupu]";
@@ -7338,7 +7338,7 @@ hu_fild06,217,270,3	script	Burupu	896,3,3,{
 		mes "best Swordman in the";
 		mes "world! But first, I gotta";
 		mes "learn how to use this thing!";
-		mes "Heeeeee-YAH! How's that? That^FFFFFF ^000000 was almost a Magnum Break, right?";
+		mes "Heeeeee-YAH! How's that? That was almost a Magnum Break, right?";
 		emotion e_swt2,0;
 		close;
 	}
@@ -7761,7 +7761,7 @@ hu_in01,19,161,0	script	Alex	803,{
 		mes "Our main goal in this";
 		mes "excavation is to retrieve";
 		mes "some extremely valuable";
-		mes "item inside the shrine. However,^FFFFFF ^000000 it's too dangerous to go in there";
+		mes "item inside the shrine. However, it's too dangerous to go in there";
 		mes "if you're not strong enough.";
 		next;
 		mes "[Alex]";
@@ -7810,7 +7810,7 @@ hu_in01,19,161,0	script	Alex	803,{
 			mes "Anyway, I have to accept";
 			mes "them to help international";
 			mes "relations or something silly";
-			mes "like that. They say they're here^FFFFFF ^000000 to research religious relics,";
+			mes "like that. They say they're here to research religious relics,";
 			mes "but I just don't trust them.";
 			next;
 			cutin "hu_alex04.bmp",2;
@@ -8214,7 +8214,7 @@ hu_in01,14,11,4	script	Laura	70,{
 			mes "Perfect! Now, you first";
 			mes "you need to go to the shrine";
 			mes "and survey the area for your";
-			mes "own benefit. Talk to the Boatman,^FFFFFF ^000000 and he'll take you there, okay?";
+			mes "own benefit. Talk to the Boatman, and he'll take you there, okay?";
 			mes "Hurry up and come back soon!";
 			set hg_odin,12;
 			setquest 11003;
@@ -8260,7 +8260,7 @@ hu_in01,14,11,4	script	Laura	70,{
 			mes "Sorry, let me introduce";
 			mes "myself. I'm Laura Laurence,";
 			mes "the leader of the Odin Shrine";
-			mes "expedition for the Rune Midgarts^FFFFFF ^000000 Kingdom. Ashe Milton is my";
+			mes "expedition for the Rune Midgarts Kingdom. Ashe Milton is my";
 			mes "assistant for this excavation.";
 			next;
 			emotion e_heh,0,"Ashe";
@@ -8302,7 +8302,7 @@ hu_in01,14,11,4	script	Laura	70,{
 		mes "to spy on that snobby girl,";
 		mes "Alex of the Schwaltzvalt";
 		mes "Republic office, and report";
-		mes "what she's actually doing to me. ^FFFFFF ^000000";
+		mes "what she's actually doing to me.";
 		next;
 		cutin "hu_laura03.bmp",2;
 		mes "[Laura]";
@@ -8345,7 +8345,7 @@ hu_in01,14,11,4	script	Laura	70,{
 		mes "Ask the Boatman to take";
 		mes "you to the Odin Shrine so";
 		mes "that you can actually see it";
-		mes "for yourself. If you don't think^FFFFFF ^000000 you can handle the expedition,";
+		mes "for yourself. If you don't think you can handle the expedition,";
 		mes "then you can just let me know.";
 		close2;
 		cutin "hu_laura02.bmp",255;
@@ -8498,8 +8498,8 @@ hu_in01,14,11,4	script	Laura	70,{
 			mes "[Laura]";
 			mes "This isn't really one";
 			mes "of those jobs where you";
-			mes "can take your time. Sure,^FFFFFF ^000000 I didn't give you a deadline, but";
-			mes "we can't make progress on our^FFFFFF ^000000 research until you make progress.";
+			mes "can take your time. Sure, I didn't give you a deadline, but";
+			mes "we can't make progress on our research until you make progress.";
 			close2;
 			cutin "hu_laura03.bmp",255;
 			end;
@@ -8547,7 +8547,7 @@ hu_in01,14,11,4	script	Laura	70,{
 				mes "Schwaltzvalt snobs are doing?";
 				mes "They must think this project";
 				mes "is an excuse for them to relax";
-				mes "and slack off! They can afford^FFFFFF ^000000 to, obviously. Hmpf! Rich people!";
+				mes "and slack off! They can afford to, obviously. Hmpf! Rich people!";
 				next;
 				cutin "hu_laura03.bmp",2;
 				mes "[Laura]";
@@ -8690,7 +8690,7 @@ hu_in01,14,11,4	script	Laura	70,{
 		mes "to spy on that snobby girl,";
 		mes "Alex of the Schwaltzvalt";
 		mes "Republic office, and report";
-		mes "what she's actually doing to me. ^FFFFFF ^000000";
+		mes "what she's actually doing to me.";
 		next;
 		cutin "hu_laura04.bmp",2;
 		mes "[Laura]";
@@ -8898,7 +8898,7 @@ hu_in01,18,167,4	script	Julian	86,{
 		mes "Basically, each of our teams";
 		mes "is conducting its own research";
 		mes "for now. Now, we need your help";
-		mes "to find any relics from the Odin ^FFFFFF ^000000 Shrine. We'd appreciate it if you";
+		mes "to find any relics from the Odin Shrine. We'd appreciate it if you";
 		mes "brought as many as you can!";
 		close;
 	} else if (hg_odin == 2) {
@@ -8998,7 +8998,7 @@ hu_in01,16,20,4	script	Ashe	95,{
 			mes "Now, we should be working";
 			mes "together with the Schwaltvalt";
 			mes "Republic's Research Team, but";
-			mes "our leaders aren't getting along^FFFFFF ^000000 at all. There's just a huge";
+			mes "our leaders aren't getting along at all. There's just a huge";
 			mes "clash of personalities...";
 			next;
 			mes "[Ashe]";
@@ -9223,7 +9223,7 @@ hu_in01,159,84,3	script	Laura#2	70,{
 		mes "be equal partners in the same";
 		mes "expedition? That's what I heard";
 		mes "at the beginning! But you guys";
-		mes "have something different in mind! ^FFFFFF ^000000";
+		mes "have something different in mind!";
 		next;
 		cutin "hu_laura03.bmp",2;
 		mes "[Laura]";
@@ -9240,7 +9240,7 @@ hu_in01,159,84,3	script	Laura#2	70,{
 		mes "I-I don't know what you're";
 		mes "talking about! J-Julian must";
 		mes "have gotten some mission, and";
-		mes "has been carrying it out without^FFFFFF ^000000 my consent! Don't go twisting";
+		mes "has been carrying it out without my consent! Don't go twisting";
 		mes "the facts, you... you thief!";
 		next;
 		cutin "hu_laura03.bmp",2;

+ 15 - 15
npc/quests/quests_nameless.txt

@@ -4221,7 +4221,7 @@ cmd_fild01,55,160,0	script	Heap of Earth	844,{
 		mes "Ah, so you failed to";
 		mes "fix the Mystic Dryer de";
 		mes "Elegance? That's expected:";
-		mes "I didn't really design it for the^FFFFFF ^000000 common user in mind. Well,";
+		mes "I didn't really design it for the common user in mind. Well,";
 		mes "why don't you try it again?";
 		erasequest 3106;
 		set diamond_edq,10;
@@ -4419,7 +4419,7 @@ OnTouch:
 							mes "and vibrated violently";
 							mes "before coming to a sudden";
 							mes "stop. That was the wrong";
-							mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+							mes "switch. You'd better ask Dorian...";
 							setquest 3106;
 							set diamond_edq,11;
 							close;
@@ -4445,7 +4445,7 @@ OnTouch:
 								mes "and vibrated violently";
 								mes "before coming to a sudden";
 								mes "stop. That was the wrong";
-								mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+								mes "switch. You'd better ask Dorian...";
 								setquest 3106;
 								set diamond_edq,11;
 								close;
@@ -4471,7 +4471,7 @@ OnTouch:
 							mes "and vibrated violently";
 							mes "before coming to a sudden";
 							mes "stop. That was the wrong";
-							mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+							mes "switch. You'd better ask Dorian...";
 							setquest 3106;
 							set diamond_edq,11;
 							close;
@@ -4497,7 +4497,7 @@ OnTouch:
 								mes "and vibrated violently";
 								mes "before coming to a sudden";
 								mes "stop. That was the wrong";
-								mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+								mes "switch. You'd better ask Dorian...";
 								setquest 3106;
 								set diamond_edq,11;
 								close;
@@ -4522,7 +4522,7 @@ OnTouch:
 							mes "and vibrated violently";
 							mes "before coming to a sudden";
 							mes "stop. That was the wrong";
-							mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+							mes "switch. You'd better ask Dorian...";
 							setquest 3106;
 							set diamond_edq,11;
 							close;
@@ -4548,7 +4548,7 @@ OnTouch:
 								mes "and vibrated violently";
 								mes "before coming to a sudden";
 								mes "stop. That was the wrong";
-								mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+								mes "switch. You'd better ask Dorian...";
 								setquest 3106;
 								set diamond_edq,11;
 								close;
@@ -4574,7 +4574,7 @@ OnTouch:
 							mes "and vibrated violently";
 							mes "before coming to a sudden";
 							mes "stop. That was the wrong";
-							mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+							mes "switch. You'd better ask Dorian...";
 							setquest 3106;
 							set diamond_edq,11;
 							close;
@@ -4600,7 +4600,7 @@ OnTouch:
 								mes "and vibrated violently";
 								mes "before coming to a sudden";
 								mes "stop. That was the wrong";
-								mes "switch. You'd better ask Dorian... ^FFFFFF ^000000";
+								mes "switch. You'd better ask Dorian...";
 								setquest 3106;
 								set diamond_edq,11;
 								close;
@@ -7202,7 +7202,7 @@ in_rogue,359,116,3	script	Marybell	747,{
 		mes "[Marybell]";
 		mes "Oh, Gooho decoded everything?";
 		mes "Let's see... Something about";
-		mes "the Book of Forbidden Mystery...^FFFFFF ^000000 Ah. There we go! The location";
+		mes "the Book of Forbidden Mystery... Ah. There we go! The location";
 		mes "of the Z Gang's hideout!";
 		mes "Heh heh! We got 'em!";
 		next;
@@ -9404,7 +9404,7 @@ morocc,143,63,3	script	Ragged Man#nd	929,{
 						mes "the hands of someone like";
 						mes "you than a rival treasure";
 						mes "hunter. This hunter that";
-						mes "stays north in town apparently^FFFFFF ^000000 confirmed the treasure's location.";
+						mes "stays north in town apparently confirmed the treasure's location.";
 						next;
 						mes "[Ragged Man]";
 						mes "Now, I hear that this guy";
@@ -9475,7 +9475,7 @@ morocc,143,63,3	script	Ragged Man#nd	929,{
 				mes "he hands of someone like";
 				mes "you than a rival treasure";
 				mes "hunter. This hunter that";
-				mes "stays north in town apparently^FFFFFF ^000000 confirmed the treasure's location.";
+				mes "stays north in town apparently confirmed the treasure's location.";
 				next;
 				mes "[Ragged Man]";
 				mes "Now, I hear that this guy";
@@ -9509,7 +9509,7 @@ morocc,143,63,3	script	Ragged Man#nd	929,{
 		mes "Ah, you must be having";
 		mes "trouble finding that guy";
 		mes "I was talking about. He's";
-		mes "just in the northern part of^FFFFFF ^000000 this town. It can't be that hard.";
+		mes "just in the northern part of this town. It can't be that hard.";
 		close;
 	}
 	else if (treasure_nd > 10) {
@@ -9534,7 +9534,7 @@ morocc,143,63,3	script	Ragged Man#nd	929,{
 		mes "So how's the treasure";
 		mes "hunt coming along? I hope";
 		mes "you have better luck than";
-		mes "I did. Still, I've got a pretty^FFFFFF ^000000 good feeling that you'll find it.";
+		mes "I did. Still, I've got a pretty good feeling that you'll find it.";
 		close;
 	}
 }
@@ -10337,7 +10337,7 @@ comodo,139,184,3	script	Scholar#zgang	742,{
 		mes "jewel came into a rich man's";
 		mes "possession. However, he lost";
 		mes "his fortune and was completely";
-		mes "ruined after obtaining it. Hence ^FFFFFF ^000000 the moniker, ''Unlucky Emerald.''";
+		mes "ruined after obtaining it. Hence the moniker, ''Unlucky Emerald.''";
 		next;
 		mes "[Scholar]";
 		mes "Then the emerald came into";

+ 1 - 1
npc/quests/quests_veins.txt

@@ -4453,7 +4453,7 @@ veins,115,59,5	script	Saraman	847,{
 		mes "Sadly, Silk Sand Camels";
 		mes "are almost extinct, so I only";
 		mes "have one on this farm. That's";
-		mes "why we have a special contract^FFFFFF ^000000 with Ms. Ivory to make her soap.";
+		mes "why we have a special contract with Ms. Ivory to make her soap.";
 		next;
 		mes "[Camel Farm Owner Saraman]";
 		mes "Say... I wasn't expecting";

+ 18 - 18
npc/quests/skills/alchemist_skills.txt

@@ -141,7 +141,7 @@ yuno_in04,33,108,4	script	Pisruik#qsk_al	883,{
 				mes "5 Yellow Gemstones.";
 				mes "That's what I needed.";
 				mes "I'm sure there was more,";
-				mes "but what I can't recall exactly... ^FFFFFF ^000000";
+				mes "but what I can't recall exactly...";
 				next;
 				if (select("10 Hearts of Mermaid:10 Large Jellopies") == 1) {
 					mes "[Pisruik]";
@@ -642,7 +642,7 @@ yuno_in04,33,108,4	script	Pisruik#qsk_al	883,{
 			mes "20 Maneater Blossoms.";
 			mes "If I weren't so sickly, I'd get";
 			mes "them myself, but--*Cough* as";
-			mes "you can see, I don't feel so well. ^FFFFFF ^000000";
+			mes "you can see, I don't feel so well.";
 			set ALCHE_SK,6;
 			next;
 			mes "[Pisruik]";
@@ -761,7 +761,7 @@ yuno_in04,33,108,4	script	Pisruik#qsk_al	883,{
 			mes "Actually, I miscalculated";
 			mes "the number of Maneater";
 			mes "Blossoms that I need. Would";
-			mes "you bring me one more? Sorry,^FFFFFF ^000000 I know it's kind of troublesome...";
+			mes "you bring me one more? Sorry, I know it's kind of troublesome...";
 			close;
 		}
 		else if (ALCHE_SK == 8) {
@@ -853,7 +853,7 @@ yuno_in04,33,108,4	script	Pisruik#qsk_al	883,{
 				mes "Actually, I miscalculated";
 				mes "the number of Maneater";
 				mes "Blossoms that I need. Would";
-				mes "you bring me one more? Sorry,^FFFFFF ^000000 I know it's kind of troublesome...";
+				mes "you bring me one more? Sorry, I know it's kind of troublesome...";
 				close;
 			}
 		}
@@ -1135,7 +1135,7 @@ yuno_in04,27,107,4	script	Degas#qsk_al	748,{
 	mes "always coughing. Between";
 	mes "the two of them, it's far too";
 	mes "noisy to focus on my research!";
-	mes "If only I could work in my very^FFFFFF ^000000 own private, secret laboratory...";
+	mes "If only I could work in my very own private, secret laboratory...";
 	close;
 }
 
@@ -1179,12 +1179,12 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "to see if your Homunculus";
 		mes "is tired or hungry, or if it's";
 		mes "been hurt. You must also take";
-		mes "into account your Homunculus's^FFFFFF ^000000 feelings towards you, its owner.";
+		mes "into account your Homunculus's feelings towards you, its owner.";
 		next;
 		mes "[Kellasus]";
 		mes "When that nurturing attitude";
 		mes "becomes second nature to you,";
-		mes "you will have mastered Bioethics.^FFFFFF ^000000 It sounds simple, but you can only";
+		mes "you will have mastered Bioethics. It sounds simple, but you can only";
 		mes "understand a relationship with a Homunculus through experience.";
 		next;
 		mes "[Kellasus]";
@@ -1527,7 +1527,7 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "brings you this way?";
 		mes "As your senior in the";
 		mes "field of Alchemy, I can";
-		mes "give you some advice if you're^FFFFFF ^000000 stumped by a particular problem...";
+		mes "give you some advice if you're stumped by a particular problem...";
 		next;
 		if (select("Teach me the Homunculus Skills.:No, nothing.") == 1) {
 			mes "[" + strcharinfo(0) + "]";
@@ -1557,7 +1557,7 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 			mes "[Kellasus]";
 			mes "Perhaps I never should";
 			mes "have mentioned that subject.";
-			mes "But I still don't understand why^FFFFFF ^000000 you would suddenly want to ";
+			mes "But I still don't understand why you would suddenly want to ";
 			mes "learn those skills. Yes, it's";
 			mes "true that I could teach you...";
 			next;
@@ -1631,8 +1631,8 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "[Kellasus]";
 		mes "I only fear that your quest";
 		mes "for knowledge, your insatiable";
-		mes "curiosity to reveal the unknown,^FFFFFF ^000000 may lead you on the path of the";
-		mes "Homunculus. For your own sake,^FFFFFF ^000000 don't bother considering the idea.";
+		mes "curiosity to reveal the unknown, may lead you on the path of the";
+		mes "Homunculus. For your own sake, don't bother considering the idea.";
 		next;
 		set bioeth,3;
 		mes "[Kellasus]";
@@ -1640,7 +1640,7 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "precious. If your motives";
 		mes "are good, and untainted by";
 		mes "the desire for fame or fortune,";
-		mes "and if you work for the greater^FFFFFF ^000000 good of mankind, you'll be fine.";
+		mes "and if you work for the greater good of mankind, you'll be fine.";
 		close;
 	}
 	if (BaseJob == Job_Alchemist && bioeth == 1) {
@@ -1688,7 +1688,7 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "exciting vastness of Alchemy,";
 		mes "there is no turning back. Do";
 		mes "your best to learn all that you";
-		mes "can, and never forget that you^FFFFFF ^000000 have responsibilities to mankind.";
+		mes "can, and never forget that you have responsibilities to mankind.";
 		close;
 	}
 	if (BaseJob == Job_Alchemist) {
@@ -1748,7 +1748,7 @@ lhz_in01,225,122,5	script	Skrajjad#qsk_al	754,{
 		mes "I've taught you everything";
 		mes "I can about the Homunculi.";
 		mes "I hope that I've been of some";
-		mes "help in your quest for knowledge^FFFFFF ^000000 and understanding of our universe.";
+		mes "help in your quest for knowledge and understanding of our universe.";
 		next;
 		mes "[Skrajjad]";
 		mes "If you haven't already done";
@@ -2079,7 +2079,7 @@ lhz_in03,106,34,3	script	Koring#qsk_al	706,{
 		mes "He's always trying hard";
 		mes "to make me happy and to ";
 		mes "help me when I have problems.";
-		mes "Like the time I was really sick... ^FFFFFF ^000000";
+		mes "Like the time I was really sick...";
 		next;
 		mes "[Koring]";
 		mes "Daddy did his best to make";
@@ -2152,15 +2152,15 @@ lhz_in03,109,31,5	script	Beninne#qsk_al	90,{
 
 lighthalzen,226,210,3	script	Nannan#qsk_al	86,{
 	mes "[Nannan]";
-	mes "You know, I always thought^FFFFFF ^000000 that all Alchemists were bookish,";
+	mes "You know, I always thought that all Alchemists were bookish,";
 	mes "scholarly types, their faces always buried in books and studying. But";
 	mes "I managed to find one who doesn't fit that nerdy stereotype at all.";
 	next;
 	mes "[Nannan]";
 	mes "This guy, what's-his-face,";
 	mes "Broncher, is always wasting";
-	mes "his time drinking. I guess he^FFFFFF ^000000 discovered the secret of turning";
-	mes "water into Grade A booze. But^FFFFFF ^000000 at least he's not the stuffy type.";
+	mes "his time drinking. I guess he discovered the secret of turning";
+	mes "water into Grade A booze. But at least he's not the stuffy type.";
 	next;
 	mes "[Nannan]";
 	mes "I don't know how much";

+ 8 - 8
npc/quests/skills/assassin_skills.txt

@@ -1,4 +1,4 @@
-//===== rAthena Script ======================================= 
+//===== rAthena Script ======================================= 
 //= Assassin Skills Quests
 //===== By: ================================================== 
 //= Lupus, Reddozen
@@ -170,7 +170,7 @@ in_moc_16,14,27,5	script	Assassin#realman	884,{
 					mes "the Venom Knife skill from";
 					mes "me first. Then, you can talk";
 					mes "to Esmille, the beautiful";
-					mes "Assassin Cross right next to^FFFFFF ^000000 me, to learn Sonic Acceleration.";
+					mes "Assassin Cross right next to me, to learn Sonic Acceleration.";
 					next;
 					break;
 				case 2:
@@ -186,7 +186,7 @@ in_moc_16,14,27,5	script	Assassin#realman	884,{
 					mes "This Venom Knife skill was";
 					mes "developed with this weakness";
 					mes "in long range attacking in mind. Basically, we use the Envenom";
-					mes "skill on a knife and throw it at^FFFFFF ^000000 a distant enemy to poison them.";
+					mes "skill on a knife and throw it at a distant enemy to poison them.";
 					next;
 					break;
 				case 3:
@@ -309,7 +309,7 @@ in_moc_16,23,27,5	script	Assassin#realgirl	885,{
 				mes "Sonic Blow skill. The skill";
 				mes "I will teach you is completely";
 				mes "useless unless you learn how";
-				mes "to perform a Sonic Blow. I shall^FFFFFF ^000000 be waiting right here till then.";
+				mes "to perform a Sonic Blow. I shall be waiting right here till then.";
 				close;
 			}
 			mes "[Esmille]";
@@ -486,8 +486,8 @@ in_moc_16,23,27,5	script	Assassin#realgirl	885,{
 			mes "[Esmille]";
 			mes "That jewel is yours";
 			mes "to keep. In truth, I don't";
-			mes "really need any treasure, just^FFFFFF ^000000 some proof of your qualification.";
-			mes "It looks like you're ready for me^FFFFFF ^000000 to teach you Sonic Acceleration.";
+			mes "really need any treasure, just some proof of your qualification.";
+			mes "It looks like you're ready for me to teach you Sonic Acceleration.";
 			set ASSN_SK,6;
 			next;
 			mes "[Esmille]";
@@ -642,7 +642,7 @@ in_moc_16,23,27,5	script	Assassin#realgirl	885,{
 				mes "that you're so enthusiastic";
 				mes "about learning this skill.";
 				mes "But first, there we need to";
-				mes "take care of the prerequisites... ^FFFFFF ^000000";
+				mes "take care of the prerequisites...";
 				next;
 				if (getskilllv("AS_SONICBLOW") == 0) {
 					mes "[Esmille]";
@@ -650,7 +650,7 @@ in_moc_16,23,27,5	script	Assassin#realgirl	885,{
 					mes "Sonic Blow skill. The skill";
 					mes "I will teach you is completely";
 					mes "useless unless you learn how";
-					mes "to perform a Sonic Blow. I shall^FFFFFF ^000000 be waiting right here till then.";
+					mes "to perform a Sonic Blow. I shall be waiting right here till then.";
 					close;
 				}
 				mes "[Esmille]";

+ 7 - 7
npc/quests/skills/bard_skills.txt

@@ -420,7 +420,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "fiercely into the eyes of";
 				mes "your target, and focus on";
 				mes "thoughts of dominance. This";
-				mes "is the basis for mesmerization.^FFFFFF ^000000 Now listen to this incantation...";
+				mes "is the basis for mesmerization. Now listen to this incantation...";
 				next;
 				mes "[Riott]";
 				mes "Uuuummm Baaalaaaa";
@@ -434,7 +434,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "[Riott]";
 				mes "Pang's Voice is used to";
 				mes "confuse people and disrupt";
-				mes "control of their bodies. It's not^FFFFFF ^000000 a fatal skill, but it is effective";
+				mes "control of their bodies. It's not a fatal skill, but it is effective";
 				mes "in mentally upsetting your enemy. Make very wise use of this skill.";
 				skill "BA_PANGVOICE",1,0;
 				close;
@@ -478,7 +478,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "fiercely into the eyes of";
 				mes "your target, and focus on";
 				mes "thoughts of dominance. This";
-				mes "is the basis for mesmerization.^FFFFFF ^000000 Now listen to this incantation...";
+				mes "is the basis for mesmerization. Now listen to this incantation...";
 				next;
 				mes "[Riott]";
 				mes "''Toad's leg, Verit's heart,";
@@ -519,7 +519,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "your use of this skill! Don't";
 				mes "use it recklessly, or people";
 				mes "will come to hate you as they";
-				mes "hate me. But ''Pang Voice'' can^FFFFFF ^000000 be welcome is certain situations.";
+				mes "hate me. But ''Pang Voice'' can be welcome is certain situations.";
 				next;
 				mes "[Riott]";
 				mes "Subject your enemies to";
@@ -544,7 +544,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "some fresh eggs laid by";
 				mes "Yhelle, just like I asked.";
 				mes "I'm sure it was dangerous";
-				mes "going to Nifflheim, but the^FFFFFF ^000000 flavor of these eggs is worth it.";
+				mes "going to Nifflheim, but the flavor of these eggs is worth it.";
 				next;
 				next;
 				mes "[Riott]";
@@ -560,7 +560,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "fiercely into the eyes of";
 				mes "your target, and focus on";
 				mes "thoughts of dominance. This";
-				mes "is the basis for mesmerization.^FFFFFF ^000000 Now listen to this incantation...";
+				mes "is the basis for mesmerization. Now listen to this incantation...";
 				next;
 				mes "[Riott]";
 				mes "''Toad's leg, Verit's heart,";
@@ -601,7 +601,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "your use of this skill! Don't";
 				mes "use it recklessly, or people";
 				mes "will come to hate you as they";
-				mes "hate me. But ''Pang Voice'' can^FFFFFF ^000000 be welcome is certain situations.";
+				mes "hate me. But ''Pang Voice'' can be welcome is certain situations.";
 				next;
 				mes "[Riott]";
 				mes "Subject your enemies to";

+ 6 - 6
npc/quests/skills/blacksmith_skills.txt

@@ -27,7 +27,7 @@ geffen,178,72,3	script	Akkie#qsk_bs	726,{
 			mes "[Akkie]";
 			mes "Actually, let me jog your";
 			mes "memory with this counterfeit";
-			mes "zeny that we made the last time.^FFFFFF ^000000 Do you remember how to perform";
+			mes "zeny that we made the last time. Do you remember how to perform";
 			mes "Dubious Salesmanship? You";
 			mes "should be able to use it now...";
 			set BLACK_SK,8;
@@ -537,7 +537,7 @@ geffen,172,52,1	script	Goodman#qsk_bs	826,{
 					mes "the Greed skill automatically";
 					mes "picks up all items in a 5*5";
 					mes "cell area around the caster.";
-					mes "It's handy for picking up clumps^FFFFFF ^000000 of goods from looting monsters.";
+					mes "It's handy for picking up clumps of goods from looting monsters.";
 					next;
 					mes "[Goodman]";
 					mes "First thing's first. I need to";
@@ -569,7 +569,7 @@ geffen,172,52,1	script	Goodman#qsk_bs	826,{
 					mes "Back already, eh?";
 					mes "Alright, let me check";
 					mes "the things you're carrying.";
-					mes "Let's see, Inventory, Inventory... ^FFFFFF ^000000";
+					mes "Let's see, Inventory, Inventory...";
 					next;
 					mes "[Goodman]";
 					mes "Good work: you pass.";
@@ -587,9 +587,9 @@ geffen,172,52,1	script	Goodman#qsk_bs	826,{
 					mes "artisans. Being rich and famous";
 					mes "is merely a side effect of that.";
 					if (Upper == 1)
-						mes "Honorable Master Smiths know^FFFFFF ^000000 value is in the craftsmanship...";
+						mes "Honorable Master Smiths know value is in the craftsmanship...";
 					else
-						mes "Honorable Blacksmiths know^FFFFFF ^000000 value is in the craftsmanship...";
+						mes "Honorable Blacksmiths know value is in the craftsmanship...";
 					next;
 					if (Upper == 1) {
 						mes "[Goodman]";
@@ -617,7 +617,7 @@ geffen,172,52,1	script	Goodman#qsk_bs	826,{
 					mes "Hm. You've come back";
 					mes "too early. And you didn't";
 					mes "complete the objective that";
-					mes "I set for you. Listen carefully. ^FFFFFF ^000000";
+					mes "I set for you. Listen carefully.";
 					next;
 					mes "[Goodman]";
 					mes "Go fill your Inventory";

+ 2 - 2
npc/quests/skills/crusader_skills.txt

@@ -153,7 +153,7 @@ geffen,110,117,3	script	Ford#11	752,{
 			mes "Goodness, there's blood all";
 			mes "over the paper! Let's see...";
 			mes "Oh no. This is an emergency";
-			mes "situation! I need to report this^FFFFFF ^000000 to Sir Arga and request for";
+			mes "situation! I need to report this to Sir Arga and request for";
 			mes "backup immediately!";
 			next;
 			mes "["+ strcharinfo(0) +"]";
@@ -400,7 +400,7 @@ gef_fild13,297,242,3	script	Soldier#277	751,{
 				mes "^333333(I better bring him";
 				mes "a Red Potion, otherwise";
 				mes "I have no hope of getting";
-				mes "that report without hurting him!) ^FFFFFF ^000000";
+				mes "that report without hurting him!)";
 				close;
 			}
 		}

+ 2 - 2
npc/quests/skills/dancer_skills.txt

@@ -94,7 +94,7 @@ comodo,204,172,5	script	Canell#qsk_dan01	724,{
 			mes "Ho-ho~ It's good that you";
 			mes "recognize that you have much";
 			mes "to learn. Well, let's not waste";
-			mes "any time. Your first lesson will^FFFFFF ^000000 be on image training and self";
+			mes "any time. Your first lesson will be on image training and self";
 			mes "visualization. Now, for that...";
 			next;
 			mes "[Canell]";
@@ -259,7 +259,7 @@ comodo,204,172,5	script	Canell#qsk_dan01	724,{
 			mes "proper winking is to allow";
 			mes "your eyelid to seductively";
 			mes "move to a natural rhythm.";
-			mes "Close your eye for a second,^FFFFFF ^000000 then open it slowly to this count.";
+			mes "Close your eye for a second, then open it slowly to this count.";
 			next;
 			mes "[Canell]";
 			mes "Un, deux, trois~";

+ 4 - 4
npc/quests/skills/knight_skills.txt

@@ -236,7 +236,7 @@ prt_in,85,99,3	script	Knight#kabuto	734,{
 			mes "I forget all about my old";
 			mes "fashioned ideals. I guess";
 			mes "times have changed, and that";
-			mes "my idea of chivalry may be dead. ^FFFFFF ^000000";
+			mes "my idea of chivalry may be dead.";
 			close;
 		}
 		if (KNGT_SK == 1) {
@@ -278,7 +278,7 @@ prt_in,85,99,3	script	Knight#kabuto	734,{
 			mes "more active, there are too";
 			mes "many regulations that hamper";
 			mes "the good we can do. Over time,";
-			mes "the situation has grown much^FFFFFF ^000000 worse. But don't take my word...";
+			mes "the situation has grown much worse. But don't take my word...";
 			next;
 			mes "[Essofeit]";
 			mes "Perhaps it will be better";
@@ -365,7 +365,7 @@ prontera,72,352,7	script	Grand Master	733,{
 	mes "men! I know training can";
 	mes "be tough, but it'll make";
 	mes "you harder, better, faster and";
-	mes "stronger! Prontera's safety is^FFFFFF ^000000 your responsibility, Knights!";
+	mes "stronger! Prontera's safety is your responsibility, Knights!";
 	next;
 	mes "[Grand Master]";
 	mes "...";
@@ -487,7 +487,7 @@ prontera,66,358,5	script	Knight#gattack	733,{
 		mes "Gosh, I'm sick and tired of";
 		mes "him talking about Knighthood.";
 		mes "Essofeit insists that all Knights, even complete rookies, should be";
-		mes "able to obtain 5 Candy Canes and^FFFFFF ^000000 3 Witherless Roses from hunting.";
+		mes "able to obtain 5 Candy Canes and 3 Witherless Roses from hunting.";
 		next;
 		mes "[Gatack]";
 		mes "Hell, I just hate to hear";

+ 5 - 5
npc/quests/skills/monk_skills.txt

@@ -101,7 +101,7 @@ prt_monk,270,198,3	script	Apprentice Monk#qsk_mo	753,{
 				mes "[Monk]";
 				mes "My test may seem too strict,";
 				mes "but it is impossible to learn";
-				mes "Spiritual Bestowment without^FFFFFF ^000000 the right discipline. As with all";
+				mes "Spiritual Bestowment without the right discipline. As with all";
 				mes "things, readiness and preparation precede all forms of realization.";
 				next;
 				mes "[Monk]";
@@ -164,7 +164,7 @@ prt_monk,270,198,3	script	Apprentice Monk#qsk_mo	753,{
 				mes "meaning of selflessness?";
 				mes "When you abandon greed";
 				mes "and the desires of the world,";
-				mes "you will be ready for my teaching. ^FFFFFF ^000000";
+				mes "you will be ready for my teaching.";
 				close;
 			}
 		}
@@ -180,7 +180,7 @@ prt_monk,270,198,3	script	Apprentice Monk#qsk_mo	753,{
 			mes "[Monk]";
 			mes "Hm? To what purpose have";
 			mes "you come to visit me? Ah, so";
-			mes "you wish to learn the skill that^FFFFFF ^000000 I have developed. My colleague";
+			mes "you wish to learn the skill that I have developed. My colleague";
 			mes "was right: more and more people have been wanting to learn this.";
 			next;
 			mes "[Monk]";
@@ -305,7 +305,7 @@ monk_test,316,69,5	script	Monk#qsk_mo	823,{
 			mes "innocents terrorized by";
 			mes "the aggressive Mandragoras.";
 			mes "If you bring me ^FF000020 Stems^000000 and";
-			mes "^FF00003 Shoots^000000, I will be satisfied^FFFFFF ^000000 with this proof of your ability.";
+			mes "^FF00003 Shoots^000000, I will be satisfied with this proof of your ability.";
 			next;
 			mes "[Monk]";
 			mes "Do you understand now?";
@@ -366,7 +366,7 @@ monk_test,316,69,5	script	Monk#qsk_mo	823,{
 			mes "living in seclusion that";
 			mes "can teach the Spiritual";
 			mes "Bestowment skill. However,";
-			mes "he is stubborn, and has refused^FFFFFF ^000000 many who wish to learn from him.";
+			mes "he is stubborn, and has refused many who wish to learn from him.";
 			next;
 			mes "[Monk]";
 			mes "It would be good if";

+ 3 - 3
npc/quests/skills/priest_skills.txt

@@ -91,7 +91,7 @@ prt_church,111,112,1	script	Sister Linus	79,{
 			next;
 			mes "[Sister Linus]";
 			mes "One day, a group of adventurers";
-			mes "came to Prontera Church in hopes^FFFFFF ^000000 of hiring a Priest to accompany";
+			mes "came to Prontera Church in hopes of hiring a Priest to accompany";
 			mes "them to ^3131DDGlast Heim^000000. It must have been fate that she was the only";
 			mes "Priest that was available.";
 			next;
@@ -116,7 +116,7 @@ prt_church,111,112,1	script	Sister Linus	79,{
 			mes "Surrounded by Wanderers,";
 			mes "the adventurers quickly fell";
 			mes "in defeat, one by one. Soon,";
-			mes "the young nun was the only^FFFFFF ^000000 one of the group still standing.";
+			mes "the young nun was the only one of the group still standing.";
 			next;
 			mes "[Sister Linus]";
 			mes "Alone against impossible";
@@ -195,7 +195,7 @@ prt_church,111,112,1	script	Sister Linus	79,{
 			mes "running my mouth! I'm";
 			mes "sorry to keep you, did you";
 			mes "have somewhere to go? Well,";
-			mes "I'll be praying for your safety~ ^FFFFFF ^000000";
+			mes "I'll be praying for your safety~";
 			next;
 			mes "["+ strcharinfo(0) +"]";
 			mes "Before I go, would you";

+ 8 - 8
npc/quests/skills/rogue_skills.txt

@@ -207,7 +207,7 @@ in_rogue,355,179,0	script	Haijara Greg#rogueguild	46,{
 							mes "but after transcending, he";
 							mes "somehow became a Stalker.";
 							mes "Retaining his knowledge of";
-							mes "the Monk's Root skill, he adapted^FFFFFF ^000000 it for the purposes of the Rogues.";
+							mes "the Monk's Root skill, he adapted it for the purposes of the Rogues.";
 							next;
 							mes "[Haijara Greg]";
 							mes "Chae Takbae recorded the";
@@ -386,7 +386,7 @@ in_rogue,355,179,0	script	Haijara Greg#rogueguild	46,{
 				mes "supposed to be in the";
 				mes "middle of training to learn";
 				mes "that skill? Please speak to";
-				mes "Thor and complete your training. ^FFFFFF ^000000";
+				mes "Thor and complete your training.";
 				close;
 			}
 			else if (ROG_SK == 8) {
@@ -491,7 +491,7 @@ in_rogue,355,179,0	script	Haijara Greg#rogueguild	46,{
 					mes "you about Close Confine.";
 					mes "I hope that you can learn";
 					mes "more about this skill through";
-					mes "practice, and that you become^FFFFFF ^000000 as great a legend as Chae Takbae.";
+					mes "practice, and that you become as great a legend as Chae Takbae.";
 					set ROG_SK,12;
 					skill 1005,1,0;
 					specialeffect2 EF_LIGHTSPHERE;
@@ -750,7 +750,7 @@ in_rogue,268,125,2	script	Thor Greg#rogueguild	86,{
 			mes "out with Antonio Jr. here";
 			mes "inside the Rogue Guild. ";
 			mes "Please bring him the letter";
-			mes "I've written as soon as possible! ^FFFFFF ^000000";
+			mes "I've written as soon as possible!";
 			close;
 		}
 		else if (ROG_SK == 5) {
@@ -792,7 +792,7 @@ in_rogue,268,125,2	script	Thor Greg#rogueguild	86,{
 				mes "training partner. Approach her";
 				mes "closely and make sure that you";
 				mes "predict and block her movements";
-				mes "to the left, right or backward.^FFFFFF ^000000 Get ready, I'm sending you now...";
+				mes "to the left, right or backward. Get ready, I'm sending you now...";
 				close2;
 				warp "in_rogue",89,114;
 				end;
@@ -823,7 +823,7 @@ in_rogue,268,125,2	script	Thor Greg#rogueguild	86,{
 				mes "training partner. Approach her";
 				mes "closely and make sure that you";
 				mes "predict and block her movements";
-				mes "to the left, right or backward.^FFFFFF ^000000 Get ready, I'm sending you now...";
+				mes "to the left, right or backward. Get ready, I'm sending you now...";
 				set ROG_SK,6;
 				close2;
 				warp "in_rogue",89,114;
@@ -843,7 +843,7 @@ in_rogue,268,125,2	script	Thor Greg#rogueguild	86,{
 			mes "that you've completed your";
 			mes "training. Congratulations!";
 			mes "Now, please speak to my";
-			mes "father so that he can explain^FFFFFF ^000000 the Close Confine skill in detail.";
+			mes "father so that he can explain the Close Confine skill in detail.";
 			set ROG_SK,9;
 			close;
 		}
@@ -852,7 +852,7 @@ in_rogue,268,125,2	script	Thor Greg#rogueguild	86,{
 			mes "Please talk to my father";
 			mes "so that he can explain the";
 			mes "nuances of the Close Confine";
-			mes "skill to you. He should still be^FFFFFF ^000000 in the Rogue Guild's panic room.";
+			mes "skill to you. He should still be in the Rogue Guild's panic room.";
 			close;
 		}
 		else if (ROG_SK == 11) {

+ 3 - 3
npc/quests/skills/sage_skills.txt

@@ -185,14 +185,14 @@ yuno_in03,176,24,3	script	Mischna	755,{
 		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 "according to the specific element 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.";
+		mes "converter items that are required to use the Elemental Change skill.";
 		next;
 		mes "[Mishuna]";
 		mes "Although the knowledge of";
@@ -238,7 +238,7 @@ yuno_in03,176,24,3	script	Mischna	755,{
 		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...";
+		mes "a converter so that you can learn the skill from my example...";
 		set SAG_SK,1;
 		close;
 	}

+ 3 - 3
npc/quests/skills/wizard_skills.txt

@@ -102,7 +102,7 @@ gef_tower,115,36,4	script	Meow#q_wiz	876,{
 			mes "teaching Wizards this new";
 			mes "skill on behalf of the Wizard";
 			mes "Guild. Although I don't really";
-			mes "want to, I pretty much don't have^FFFFFF ^000000 a choice. So what do you say?";
+			mes "want to, I pretty much don't have a choice. So what do you say?";
 			next;
 			if (select("Nah, I'm too sleepy...:Sure, I'd like to learn a new skill.") == 1) {
 				mes "[Meow]";
@@ -368,7 +368,7 @@ prt_in,82,98,3	script	Simon Mayace#q_wiz	46,{
 			mes "I'm surprised that you chose";
 			mes "to practice magic: judging";
 			mes "from your build, I'd say that";
-			mes "you'd be well suited to wielding^FFFFFF ^000000 a sword. Haha, but that's just";
+			mes "you'd be well suited to wielding a sword. Haha, but that's just";
 			mes "a humble Knight's opinion.";
 			close;
 		}
@@ -418,7 +418,7 @@ prt_in,82,98,3	script	Simon Mayace#q_wiz	46,{
 		mes "pushing as best as I can.";
 		mes "Concentrate and practice the";
 		mes "theory on your own, and you";
-		mes "should be able to do it. Good^FFFFFF ^000000luck on your travels, adventurer~";
+		mes "should be able to do it. Good luck on your travels, adventurer~";
 		set WIZ_SK,2;
 		close;
 	}

+ 3 - 3
npc/quests/thana_quest.txt

@@ -462,7 +462,7 @@ tha_t01,140,78,4	script	Guide#reward	831,{
 	mes "[Liei]";
 	if (!countitem(.@Items[.@i])) {
 		mes "I'm sorry, but you are not";
-		mes "carrying any "+getitemname(.@Items[.@i])+"s.";
+		mes "carrying any "+callfunc("F_GetPlural",getitemname(.@Items[.@i]))+".";
 		mes "Please check your inventory";
 		mes "one more time, and then come";
 		mes "to me to redeem your items";
@@ -478,7 +478,7 @@ tha_t01,140,78,4	script	Guide#reward	831,{
 	set .@zeny_tt,(countitem(.@Items[.@i]) * 1000);
 	//set .@exp_tt,(countitem(.@Items[.@i]) * 2000);
 	mes "[Liei]";
-	mes countitem(.@Items[.@i])+" "+getitemname(.@Items[.@i])+"s, then";
+	mes callfunc("F_InsertPlural",countitem(.@Items[.@i]),getitemname(.@Items[.@i]))+", then";
 	mes "you will receive a total of...";
 	mes " ";
 	mes ""+.@zeny_tt+" zeny";
@@ -486,7 +486,7 @@ tha_t01,140,78,4	script	Guide#reward	831,{
 	next;
 	mes "[Liei]";
 	mes "Would you like to exchange";
-	mes "all of your "+getitemname(.@Items[.@i])+"s";
+	mes "all of your "+callfunc("F_GetPlural",getitemname(.@Items[.@i]));
 	mes "for your reward right now?";
 	next;
 	switch(select("Yes:No")) {

+ 1 - 1
npc/re/cities/brasilis.txt

@@ -39,7 +39,7 @@ alberta,246,82,3	script	Crewman#bra2	100,{
 	case 1:
 		if (Zeny < .@cost) {
 			mes "[Crewman]";
-			mes "I said "+(.@cost/1000)+",000 zeny.";
+			mes "I said "+callfunc("F_InsertComma",.@cost)+" zeny.";
 			close;
 		}
 		else {

+ 3 - 10
npc/re/guild/invest_main.txt

@@ -163,7 +163,7 @@ function	script	F_Invest_Abyss	{
 			close;
 		}
 		mes getarg(1);
-		mes "You've invested "+.@units+" unit"+((.@units == 1)?"":"s")+" "+((.@units < 100)?.@units:insertchar(""+.@units,",",1))+"0,000 Zeny"+getarg(2,"")+".";
+		mes "You've invested "+callfunc("F_InsertPlural",.@units,"unit")+" "+callfunc("F_InsertComma",.@zeny)+" Zeny"+getarg(2,"")+".";
 		mes "Not much but this is a small gift. You can exchange it with items in Malangdo.";
 		set Zeny, Zeny-.@zeny;
 		setd getarg(0), getd(getarg(0)) + .@units;
@@ -1038,15 +1038,8 @@ OnAgitInvest:
 		if (.@notice < 1 || .@notice > 12) {
 			mes "There are currently no investment sums available.";
 			close;
-		} else if (.@notice == 1)
-			set .@str$,"1st";
-		else if (.@notice == 2)
-			set .@str$,"2nd";
-		else if (.@notice == 3)
-			set .@str$,"3rd";
-		else
-			set .@str$,.@notice+"th";
-		mes .@str$+" total (unit in 10,000z)";
+		}
+		mes callfunc("F_GetNumSuffix",.@notice)+" total (unit in 10,000z)";
 		for(set .@i,1; .@i<=5; set .@i,.@i+1) {
 			set .@map$, .@npc$+"g_cas0"+.@i;
 			set .@fund[.@i], getd("$@vfund_"+.@npc$+"0"+.@i);

+ 11 - 11
npc/re/jobs/novice/supernovice_ex.txt

@@ -395,27 +395,27 @@ beach_dun2,119,92,4	script	Fishing Novice#sp2	567,{
 		close;
 	}
 	else if (checkquest(5100) >= 0) {
-		if (EXSUPNOV_Q_ == 3) set .@str$,"300,000";
-		else if (EXSUPNOV_Q_ == 4) set .@str$,"1,000,000";
-		else set .@str$,"100,000";
+		if (EXSUPNOV_Q_ == 3) set .@n,300000;
+		else if (EXSUPNOV_Q_ == 4) set .@n,1000000;
+		else set .@n,100000;
 		mes "[Nodor]";
 		mes "Hey, have you gone there?";
 		mes "I got another message from my bro.";
 		next;
 		mes "Bro, someone gave me...";
-		mes .@str$+" Zeny.";
+		mes callfunc("F_InsertComma",.@n)+" Zeny.";
 		mes "You do care about me...";
 		mes "~ Nudor";
 		next;
 		select("He seemed so hungry...");
 		mes "[Nodor]";
 		mes "By the way...";
-		mes .@str$+" Zeny is so little considering my celebrity status, don't you think?";
+		mes callfunc("F_InsertComma",.@n)+" Zeny is so little considering my celebrity status, don't you think?";
 		next;
 		select("Eh.....");
 		mes "[Nodor]";
 		mes "Anyway~";
-		mes .@str$+" Zeny...";
+		mes callfunc("F_InsertComma",.@n)+" Zeny...";
 		mes "Don't you think you gave him too little? My reputation is gonna take a hit now.";
 		next;
 		select("Hey...");
@@ -624,15 +624,15 @@ airplane,33,47,5	script	Nudor#sp2	729,{
 		}
 		else if (.@i < 5) {
 			switch(.@i) {
-				case 2: set .@str$,"100,000"; set .@n,100000; break;
-				case 3: set .@str$,"300,000"; set .@n,300000; break;
-				case 4: set .@str$,"1,000,000"; set .@n,1000000; break;
+				case 2: set .@n,100000; break;
+				case 3: set .@n,300000; break;
+				case 4: set .@n,1000000; break;
 			}
-			mes "Lovely~~ Did he give you "+.@str$+" Zeny? That's pretty much!";
+			mes "Lovely~~ Did he give you "+callfunc("F_InsertComma",.@n)+" Zeny? That's pretty much!";
 			next;
 			if (Zeny < .@n) {
 				mes "[Nudor]";
-				mes "What? But where is "+.@str$+" Zeny?";
+				mes "What? But where is "+callfunc("F_InsertComma",.@n)+" Zeny?";
 				close;
 			}
 		}

+ 1 - 3
npc/re/merchants/3rd_trader.txt

@@ -42,12 +42,10 @@
 		set .@item,7932+.@i;
 		set .@price,4000;
 		set .@max,2000;
-		set .@max$,"2,000";
 	} else if (.@i == 6) {
 		set .@item,7931;
 		set .@price,5000;
 		set .@max,500;
-		set .@max$,"500";
 		mes "Each Poison Kit costs 5,000 zeny.";
 	} else {
 		mes "Well, I see. Come back again~!";
@@ -65,7 +63,7 @@
 	}
 	if (.@amount > .@max) {
 		mes "[Poison Herb Merchant]";
-		mes "The number must be less than "+.@max$+"!";
+		mes "The number must be less than "+callfunc("F_InsertComma",.@max)+"!";
 		close;
 	}
 	set .@total, .@amount * .@price;

+ 2 - 2
npc/re/merchants/blessed_refiner.txt

@@ -109,7 +109,7 @@
 	}
 	set .@ore$,"^ff9999Blessed "+.@type$+" Ore^000000";
 	mes "[Blacksmith Dister]";
-	mes "This "+.@type$+" has been refined to "+.@equip_refine+". To refine it, I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee.";
+	mes "This "+.@type$+" has been refined to "+.@equip_refine+". To refine it, I need "+.@ore$+" and a "+callfunc("F_InsertComma",.@price)+" zeny refining fee.";
 	mes "Do you want to proceed?";
 	next;
 	if(select("Yes:No") == 2) {
@@ -133,7 +133,7 @@
 	if (countitem(.@material) == 0 || Zeny < .@price) {
 		mes "[Blacksmith Dister]";
 		mes "Materials insufficient.";
-		mes "To refine "+((.@equip_lv)?"a level "+.@equip_lv+" weapon":"armor")+", I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee.";
+		mes "To refine "+((.@equip_lv)?"a level "+.@equip_lv+" weapon":"armor")+", I need "+.@ore$+" and a "+callfunc("F_InsertComma",.@price)+" zeny refining fee.";
 		close;
 	}
 	delitem .@material,1;

+ 1 - 1
npc/re/merchants/enchan_upg.txt

@@ -234,7 +234,7 @@ prt_in,28,73,3	script	Devil Enchant Master#prq	63,{
 		if (.@lost_refine) {
 			next;
 			mes "[Devil Enchant Master]";
-			mes "The failure has reduced the refine by "+.@lost_refine+" level"+((.@lost_refine == 1)?"":"s")+"! Don't be depressed!";
+			mes "The failure has reduced the refine by "+callfunc("F_InsertPlural",.@lost_refine,"level")+"! Don't be depressed!";
 		}
 		close;
 	} else if (.@select == 2) {

+ 2 - 2
npc/re/quests/magic_books.txt

@@ -815,14 +815,14 @@ function	script	Magic_Book_Essence	{
 		progressbar "ffff00",4;
 		delitem getarg(1),getarg(2);
 		if (rand(2)) {
-			mes "You have used "+getarg(2)+" "+getitemname(getarg(1))+"s to create ^999900"+getarg(3)+" Essence^000000.";
+			mes "You have used "+callfunc("F_InsertPlural",getarg(2),getitemname(getarg(1)))+" to create ^999900"+getarg(3)+" Essence^000000.";
 			next;
 			mes "^008800The "+getarg(3)+" Essence will last permanently, unless there's a problem.^000000";
 			completequest getarg(0);
 			specialeffect2 EF_LORD;
 			close;
 		}
-		mes "^008888You have failed to refine the essence using "+getarg(2)+" "+getitemname(getarg(1))+"s.^000000";
+		mes "^008888You have failed to refine the essence using "+callfunc("F_InsertPlural",getarg(2),getitemname(getarg(1)))+".^000000";
 		close;
 	}
 	if (checkquest(getarg(0)) == 2) {

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

@@ -52,7 +52,7 @@
 	for(set .@i,0; .@i<getarraysize(.@map$); set .@i,.@i+1) {
 		set .@menu$, .@menu$+
 			.@map$[.@i]+" ("+.@cost[.@i]+" Canned Food):"+
-			.@map$[.@i]+" ("+.@cost[.@i]+",000 Zeny):";
+			.@map$[.@i]+" ("+callfunc("F_InsertComma",.@cost[.@i]*1000)+" Zeny):";
 	}
 	set .@i, select(.@menu$)-2;
 	if (.@i == -1) {