From 060c4ba50162363315f2f50b35cad931e2b75ec9 Mon Sep 17 00:00:00 2001
From: AtlantisRO <atlas@atlantis-ro.net>
Date: Wed, 18 Jan 2017 00:36:32 -0700
Subject: Removed the usage of deprecated command goto from npc scripts (except
 custom folder).

Signed-off-by: Ragno <ragno@atlantis-ro.net>
---
 npc/cities/aldebaran.txt               |  40 ++-
 npc/events/MemorialDay_2008.txt        |  17 +-
 npc/events/easter_2010.txt             |  54 ++--
 npc/events/nguild/nguild_ev_agit.txt   |   8 +-
 npc/events/nguild/nguild_kafras.txt    |  13 +-
 npc/events/nguild/nguild_managers.txt  |  56 ++--
 npc/events/xmas.txt                    |  30 +-
 npc/instances/NydhoggsNest.txt         |   6 +-
 npc/jobs/2-2/sage.txt                  |  62 ++--
 npc/merchants/clothes_dyer.txt         |   6 +-
 npc/other/hugel_bingo.txt              |  37 ++-
 npc/other/marriage.txt                 |  34 +-
 npc/quests/bard_quest.txt              |  84 ++---
 npc/quests/bunnyband.txt               |  62 ++--
 npc/quests/cooking_quest.txt           | 108 +++----
 npc/quests/quests_airship.txt          | 160 ++++-----
 npc/quests/quests_lighthalzen.txt      | 573 +++++++++++++++++----------------
 npc/quests/quests_rachel.txt           | 124 +++----
 npc/quests/thana_quest.txt             |  42 ++-
 npc/re/instances/BangungotHospital.txt |  10 +-
 npc/re/jobs/2e/kagerou_oboro.txt       | 346 ++++++++++----------
 npc/re/jobs/3-1/guillotine_cross.txt   | 313 +++++++++---------
 npc/re/quests/eden/eden_tutorial.txt   | 245 +++++++-------
 npc/re/quests/quests_malangdo.txt      | 157 +++++----
 npc/re/quests/quests_malaya.txt        |  91 +++---
 25 files changed, 1336 insertions(+), 1342 deletions(-)

(limited to 'npc')

diff --git a/npc/cities/aldebaran.txt b/npc/cities/aldebaran.txt
index f2820b3b0..57d4205df 100644
--- a/npc/cities/aldebaran.txt
+++ b/npc/cities/aldebaran.txt
@@ -1209,13 +1209,8 @@ function	script	F_Lottery	{
 	mes "[Kafra]";
 	mes "^FF0000Lets see.... This is...!!^000000";
 	next;
-	if(@temp <  1) goto sL_Prize1;
-	if(@temp <  2) goto sL_Prize2;
-	if(@temp <  3) goto sL_Prize3;
-	if(@temp <=  4) goto sL_Prize4;
-	goto sL_Prize5;
-
-	sL_Prize1:
+	switch (@temp) {
+	case 0:
 		mes "[Kafra]";
 		mes "WOW!!!!..... You win!!! 1st Prize~! Congratulations~~ You got the 1st prize~~";
 		if(@Lotto == 1) getitem Wooden_Mail,1;//Items: Wooden_Mail,
@@ -1227,7 +1222,7 @@ function	script	F_Lottery	{
 		}
 		if(@Lotto == 5) getitem Yggdrasilberry,3;//Items: Yggdrasilberry,
 		return;
-	sL_Prize2:
+	case 1:
 		mes "[Kafra]";
 		mes "Oh! WOW! You've won the 2nd prize! Congratulations!!";
 		if(@Lotto == 1) getitem Shoes,1;//Items: Shoes,
@@ -1239,7 +1234,7 @@ function	script	F_Lottery	{
 			getitem Royal_Jelly,10;//Items: Royal_Jelly,
 		}
 		return;
-	sL_Prize3:
+	case 2:
 		mes "[Kafra]";
 		mes "Congratulations! You've won the 3rd prize.";
 		if(@Lotto == 1) getitem Wing_Of_Butterfly,4;//Items: Butterfly_Wing,
@@ -1248,7 +1243,8 @@ function	script	F_Lottery	{
 		if(@Lotto == 4) getitem White_Potion,15;//Items: White_Potion,
 		if(@Lotto == 5) getitem White_Potion,30;//Items: White_Potion,
 		return;
-	sL_Prize4:
+	case 3:
+	case 4:
 		mes "[Kafra]";
 		mes "You've won the 4th prize.";
 		if(@Lotto == 1) getitem Sweet_Potato,100;//Items: Sweet_Potato,
@@ -1257,7 +1253,7 @@ function	script	F_Lottery	{
 		if(@Lotto == 4) getitem Blue_Potion,5;//Items: Blue_Potion,
 		if(@Lotto == 5) getitem Blue_Potion,10;//Items: Blue_Potion,
 		return;
-	sL_Prize5:
+	default:
 		mes "[Kafra]";
 		mes "You've won the 5th prize.";
 		if(@Lotto == 1) getitem Sweet_Potato,50;//Items: Sweet_Potato,
@@ -1266,18 +1262,20 @@ function	script	F_Lottery	{
 		if(@Lotto == 4) getitem Red_Potion,250;//Items: Red_Potion,
 		if(@Lotto == 5) getitem Red_Potion,300;//Items: Red_Potion,
 		return;
+	}
 
 sF_Spin:
-	mes "[Lottery Machine]";
-	mes "Number of spins remaining: "+@input;
-	next;
-	mes "[Lottery Machine]";
-	mes "(rumble~rumble~rumble~)...";
-	next;
-	@temp = rand(10);
-	--@input;
-	if(@input <= 0) return;
-	goto sF_Spin;
+	while (true) {
+		mes "[Lottery Machine]";
+		mes "Number of spins remaining: "+@input;
+		next;
+		mes "[Lottery Machine]";
+		mes "(rumble~rumble~rumble~)...";
+		next;
+		@temp = rand(10);
+		--@input;
+		if(@input <= 0) return;
+	}
 }
 
 //== Inside Clock Tower ====================================
diff --git a/npc/events/MemorialDay_2008.txt b/npc/events/MemorialDay_2008.txt
index 41ff5b610..b87bba5f2 100644
--- a/npc/events/MemorialDay_2008.txt
+++ b/npc/events/MemorialDay_2008.txt
@@ -211,12 +211,7 @@ prontera,153,286,4	script	Memorial Plaque#Memorial	4_BOARD3,{
 		next;
 		Memorial08 = 9;
 		getexp 93750,43750;
-		goto L_CleanPlaque;
-	} else if (Memorial08 >= 9) {
-		goto L_CleanPlaque;
 	}
-
-L_CleanPlaque:
 	mes "- You see a message from the cleaned plaque.-";
 	next;
 	mes "-Although no sculptured marble should rise to their memory,-";
@@ -285,9 +280,9 @@ prontera,150,270,4	script	Grast#Memorial	4_M_HUMERCHANT,{
 			mes "I can provide you all the materials.";
 			next;
 			if (select("I'll gather the rest.", "Give me the materials.") == 2) {
-				goto L_GiveUp;
+				callsub L_GiveUp;
 			}
-			goto L_Continue;
+			callsub L_Continue;
 		} else {
 			mes "[Grast]";
 			mes "Oh, you've brought the materials I asked.";
@@ -313,9 +308,9 @@ prontera,150,270,4	script	Grast#Memorial	4_M_HUMERCHANT,{
 			mes "If you feel too burdened to gather them all, I can provide you all the materials.";
 			next;
 			if (select("I'll gather the rest.", "Give me the materials.") == 2) {
-				goto L_GiveUp;
+				callsub L_GiveUp;
 			}
-			goto L_Continue;
+			callsub L_Continue;
 		} else {
 			mes "[Grast]";
 			mes "Oh, you've brought everything I asked.";
@@ -342,9 +337,9 @@ prontera,150,270,4	script	Grast#Memorial	4_M_HUMERCHANT,{
 			mes "It's your call, " + strcharinfo(PC_NAME) + ".";
 			next;
 			if (select("I'll gather the rest.", "Give me the materials.") == 2) {
-				goto L_GiveUp;
+				callsub L_GiveUp;
 			}
-			goto L_Continue;
+			callsub L_Continue;
 		} else {
 			mes "[Grast]";
 			mes "Have you brought the materials I asked?";
diff --git a/npc/events/easter_2010.txt b/npc/events/easter_2010.txt
index 645e0cacf..0ccd987cf 100644
--- a/npc/events/easter_2010.txt
+++ b/npc/events/easter_2010.txt
@@ -119,31 +119,7 @@ prontera,202,297,3	script	Rina#Easter	4_F_JOB_HUNTER,{
 		setquest 9117;
 		close;
 	} else if (.@quest1 == 1) {
-	L_HuntingInfo:
-		mes "[Rina]";
-		mes "What you need to do is";
-		mes "to choose one monster among";
-		mes "^FF0000DEVIRUCHI,^000000 ^FF0000WRAITH DEAD,^000000";
-		mes "^FF0000DULLAHAN,^000000 ^FF0000NIGHTMARE TERROR^000000";
-		mes "and then kill ^0000FF50^000000 monsters";
-		mes "and come back to me.";
-		next;
-		mes "[Rina]";
-		mes "It must be a tough task,";
-		mes "but you are the right person";
-		mes "who did the oath-taking ceremony.";
-		mes "I hope you succeed.";
-		if (.@quest1 < 2) {
-			completequest 9117;
-			setquest 9118;
-			setquest 9119;
-			setquest 9120;
-			setquest 9121;
-		}
-		close2;
-		npcskill "AL_INCAGI",1,0,0;
-		npcskill "AL_BLESSING",1,0,0;
-		end;
+		callsub(L_HuntingInfo, .@quest1);
 	} else if (.@quest1 == 2) {
 		if (questprogress(9118) != 2 || questprogress(9119) != 2 || questprogress(9120) != 2 || questprogress(9121) != 2) {
 			if (questprogress(9118,HUNTING) == 2 || questprogress(9119,HUNTING) == 2 || questprogress(9120,HUNTING) == 2 || questprogress(9121,HUNTING) == 2) {
@@ -162,7 +138,7 @@ prontera,202,297,3	script	Rina#Easter	4_F_JOB_HUNTER,{
 				completequest 9121;
 				setquest 9122;
 			} else
-				goto L_HuntingInfo;
+				callsub(L_HuntingInfo, .@quest1);
 			end;
 		}
 	}
@@ -309,6 +285,32 @@ prontera,202,297,3	script	Rina#Easter	4_F_JOB_HUNTER,{
 	npcskill "AL_INCAGI",1,0,0;
 	npcskill "AL_BLESSING",1,0,0;
 	end;
+
+L_HuntingInfo:
+	mes "[Rina]";
+	mes "What you need to do is";
+	mes "to choose one monster among";
+	mes "^FF0000DEVIRUCHI,^000000 ^FF0000WRAITH DEAD,^000000";
+	mes "^FF0000DULLAHAN,^000000 ^FF0000NIGHTMARE TERROR^000000";
+	mes "and then kill ^0000FF50^000000 monsters";
+	mes "and come back to me.";
+	next;
+	mes "[Rina]";
+	mes "It must be a tough task,";
+	mes "but you are the right person";
+	mes "who did the oath-taking ceremony.";
+	mes "I hope you succeed.";
+	if (getarg(0) < 2) {
+		completequest 9117;
+		setquest 9118;
+		setquest 9119;
+		setquest 9120;
+		setquest 9121;
+	}
+	close2;
+	npcskill "AL_INCAGI",1,0,0;
+	npcskill "AL_BLESSING",1,0,0;
+	end;
 }
 
 geffen,207,114,4	script	#Hiddne01Easter	CLEAR_NPC,{
diff --git a/npc/events/nguild/nguild_ev_agit.txt b/npc/events/nguild/nguild_ev_agit.txt
index 99545bfff..9bb76f728 100644
--- a/npc/events/nguild/nguild_ev_agit.txt
+++ b/npc/events/nguild/nguild_ev_agit.txt
@@ -125,7 +125,7 @@ OnAgitStart:
 	end;
 OnAgitBreak:
 	callfunc "F_AgitBreak","nguild_alde","N01";
-	goto OnAgitEliminate;
+	callsub OnAgitEliminate;
 	end;
 OnGuildBreak:
 	callfunc "F_GuildBreak","nguild_alde","N01";
@@ -152,7 +152,7 @@ OnAgitStart:
 	end;
 OnAgitBreak:
 	callfunc "F_AgitBreak","nguild_gef","N02";
-	goto OnAgitEliminate;
+	callsub OnAgitEliminate;
 	end;
 OnGuildBreak:
 	callfunc "F_GuildBreak","nguild_gef","N02";
@@ -179,7 +179,7 @@ OnAgitStart:
 	end;
 OnAgitBreak:
 	callfunc "F_AgitBreak","nguild_pay","N03";
-	goto OnAgitEliminate;
+	callsub OnAgitEliminate;
 	end;
 OnGuildBreak:
 	callfunc "F_GuildBreak","nguild_pay","N03";
@@ -206,7 +206,7 @@ OnAgitStart:
 	end;
 OnAgitBreak:
 	callfunc "F_AgitBreak","nguild_prt","N04";
-	goto OnAgitEliminate;
+	callsub OnAgitEliminate;
 	end;
 OnGuildBreak:
 	callfunc "F_GuildBreak","nguild_prt","N04";
diff --git a/npc/events/nguild/nguild_kafras.txt b/npc/events/nguild/nguild_kafras.txt
index 8b448bbe3..96371ec91 100644
--- a/npc/events/nguild/nguild_kafras.txt
+++ b/npc/events/nguild/nguild_kafras.txt
@@ -39,13 +39,12 @@
 function	script	F_GKafra	{
 	cutin "kafra_01",2;
 	@GID = getcastledata(getarg(0),1);
-	if (getcharid(CHAR_ID_GUILD) == @GID && getgdskilllv(@GID,10001)) goto L_StartG;
-
-	mes "[Kafra Service]";
-	mes "I am contracted to provide service only for the ^ff0000" + getguildname(@GID) + "^000000 Guild. Please use another Kafra Corporation staff member around here. I am Sorry for your inconvenience.";
-	cutin "",255;
-	close;
-L_StartG:
+	if (getcharid(CHAR_ID_GUILD) != @GID || getgdskilllv(@GID,10001) < 1) {
+		mes "[Kafra Service]";
+		mes "I am contracted to provide service only for the ^ff0000" + getguildname(@GID) + "^000000 Guild. Please use another Kafra Corporation staff member around here. I am Sorry for your inconvenience.";
+		cutin "",255;
+		close;
+	}
 	@wrpP[0] = 200;
 	@wrpD$[0] = getarg(1);
 	setarray @wrpC$[0], @wrpD$[0]+" ^880000"+@wrpP[0]+"^000000 z", "Cancel", "", "", "","";
diff --git a/npc/events/nguild/nguild_managers.txt b/npc/events/nguild/nguild_managers.txt
index 1d9b56966..a24a0cb15 100644
--- a/npc/events/nguild/nguild_managers.txt
+++ b/npc/events/nguild/nguild_managers.txt
@@ -63,7 +63,34 @@ function	script	F_GldManager	{
 	switch (select("Kafra Staff Employment / Dismissal","Enter Treasure Room","Cancel")) {
 	case 1: // Employment / Dismissal
 		mes "[ "+getarg(0)+" ]";
-		if (getcastledata(getarg(1),9) == 1) goto L_Dismiss;
+		if (getcastledata(getarg(1),9) == 1) {
+			mes "Would you like to dismiss the current Kafra?";
+			next;
+			if (select("Dismissal","Cancel") != 1) {
+				mes "[ "+getarg(0)+" ]";
+				mes "Master, I think you should keep the current Kafra Staff because she is already trying her best to serve us";
+				return;
+			}
+			cutin "kafra_01",2;
+			mes "[ Kafra Staff ]";
+			mes "Have I done anything wrong? If I did, will you please forgive me?";
+			next;
+			if (select("Dismiss","Cancel") != 1) {
+				mes "[ Kafra Staff ]";
+				mes "Thank you master, I'll do my best! ^^.";
+				cutin "kafra_01",255;
+				return;
+			}
+			mes "[ Kafra Staff ]";
+			mes "It's unfortunate that I won't be able to serve your guild anymore....";
+			next;
+			disablenpc "Kafra Staff#"+getarg(4);
+			setcastledata getarg(1),9,0;
+			cutin "kafra_01",255;
+			mes "[ "+getarg(0)+" ]";
+			mes "The Kafra has been dismissed.  But... we should really get a Kafra as soon as possible!";
+			return;
+		}
 		if (getgdskilllv(@GID,10001) == 0){
 			mes "Master, you don't have a contract with the Kafra Staff Company.";
 			mes "In order to hire a Kafra, you must first learn the Guild skill ^5533FFContract With Kafra^000000.";
@@ -97,33 +124,6 @@ function	script	F_GldManager	{
 			//mes "Your employment contract lasts ^5533FF1 month^000000.  After this term is over you will have to create a new contract.";
 			mes "I think the Kafra Staff will benefit our guild members.";
 			return;
-		L_Dismiss:
-			mes "Would you like to dismiss the current Kafra?";
-			next;
-			if (select("Dismissal","Cancel") != 1) {
-				mes "[ "+getarg(0)+" ]";
-				mes "Master, I think you should keep the current Kafra Staff because she is already trying her best to serve us";
-				return;
-			}
-			cutin "kafra_01",2;
-			mes "[ Kafra Staff ]";
-			mes "Have I done anything wrong? If I did, will you please forgive me?";
-			next;
-			if (select("Dismiss","Cancel") != 1) {
-				mes "[ Kafra Staff ]";
-				mes "Thank you master, I'll do my best! ^^.";
-				cutin "kafra_01",255;
-				return;
-			}
-			mes "[ Kafra Staff ]";
-			mes "It's unfortunate that I won't be able to serve your guild anymore....";
-			next;
-			disablenpc "Kafra Staff#"+getarg(4);
-			setcastledata getarg(1),9,0;
-			cutin "kafra_01",255;
-			mes "[ "+getarg(0)+" ]";
-			mes "The Kafra has been dismissed.  But... we should really get a Kafra as soon as possible!";
-			return;
 	case 2: // Enter Treasure Room
 		mes "[ "+getarg(0)+" ]";
 		mes "Would you to go to our Treasure Room? Only you, the Guild Master, are allowed to enter this room.";
diff --git a/npc/events/xmas.txt b/npc/events/xmas.txt
index a6308b867..7419bc4bc 100644
--- a/npc/events/xmas.txt
+++ b/npc/events/xmas.txt
@@ -44,15 +44,14 @@
 xmas_in,100,96,4	script	Santa Claus::Santa2	4_M_SANTA,{
 	mes "[Santa Claus]";
 	if(xmas_npc==0) xmas_npc = 1; // For Lutie & Bard quest
-	if(#event_xmas > 0 && #event_xmas < 30 ) goto L_Start;
-	mes "Merry Christmas!";
-	if(Class==0 || #event_xmas>=30 ) close; //anti exploit protection
-	mes "I have a gift for you! Ho Ho Ho!";
-	getitem rand(664,667),1; //gives one of 4 gift boxes
-	++#event_xmas;
-	close;
-
-L_Start:
+	if(#event_xmas <= 0 || #event_xmas >= 30 ) {
+		mes "Merry Christmas!";
+		if(Class==0 || #event_xmas>=30 ) close; //anti exploit protection
+		mes "I have a gift for you! Ho Ho Ho!";
+		getitem rand(664,667),1; //gives one of 4 gift boxes
+		++#event_xmas;
+		close;
+	}
 	mes "I'm having a bit of a problem...";
 	mes "Do you care to listen?";
 	next;
@@ -98,7 +97,12 @@ L_Start:
 		close;
 	case 2: // Give proof
 		mes "[Santa Claus]";
-		if(countitem(Red_Socks_With_Holes) < 3) goto L_NotEnuf;
+		if(countitem(Red_Socks_With_Holes) < 3) {
+			mes "You don't have enough socks as proof.";
+			mes "Go take down those evil Santas";
+			mes "and get more for me and I'll reward you.";
+			close;
+		}
 		delitem 7034,3;
 		mes "Seems you've been doing a";
 		mes "good job of taking down those";
@@ -111,12 +115,6 @@ L_Start:
 		mes "If you get 3 more, I'll give you another.";
 		mes "Hope you get a good item.";
 		close;
-
-		L_NotEnuf:
-			mes "You don't have enough socks as proof.";
-			mes "Go take down those evil Santas";
-			mes "and get more for me and I'll reward you.";
-			close;
 	default: // Cancel
 		mes "[Santa Claus]";
 		mes "I see. Well, at the very least";
diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt
index bad1aacec..4963cf529 100644
--- a/npc/instances/NydhoggsNest.txt
+++ b/npc/instances/NydhoggsNest.txt
@@ -153,7 +153,7 @@ nyd_dun02,100,201,3	script	Yggdrasil Gatekeeper	HIDDEN_NPC,8,8,{
 					mes "If you are ready, I will allow you to enter.";
 					close;
 				case 2:
-					goto L_Enter;
+					callsub L_Enter;
 				case 3:
 					close;
 				}
@@ -163,7 +163,7 @@ nyd_dun02,100,201,3	script	Yggdrasil Gatekeeper	HIDDEN_NPC,8,8,{
 			next;
 			if(select("I want to go in.", "I want to leave.") == 2)
 				close;
-			goto L_Enter;
+			callsub L_Enter;
 		} else {
 			if (.@ins_nyd_check == 1) {
 				if ('ins_nyd2 == 3 || 'ins_nyd2 == 4) {
@@ -179,7 +179,7 @@ nyd_dun02,100,201,3	script	Yggdrasil Gatekeeper	HIDDEN_NPC,8,8,{
 				next;
 				if(select("I want to go in.", "I want to leave.") == 2)
 					close;
-				goto L_Enter;
+				callsub L_Enter;
 			} else if (.@ins_nyd_check == 2) {
 				if (.@ins_nyd_check2 == 1) {
 					mes "[Yggdrasil Gatekeeper]";
diff --git a/npc/jobs/2-2/sage.txt b/npc/jobs/2-2/sage.txt
index cb5492046..49245e1ed 100644
--- a/npc/jobs/2-2/sage.txt
+++ b/npc/jobs/2-2/sage.txt
@@ -705,22 +705,36 @@ yuno_in03,105,177,5	script	Written Test Professor#s	4_M_SAGE_A,{
 		mes "Come again when you finish the application.";
 		close;
 	}
-	else if (SAGE_Q == 4) {
-		mes "Welcome to the Schweicherbil Magic Academy.";
-		mes "You applied for this test already, didn't you?";
-		next;
-		mes "[Claytos Verdo]";
-		mes "Let's see, your name is " + strcharinfo(PC_NAME) + "...";
-		mes "Okay, let's get started!";
-		next;
-		mes "[Claytos Verdo]";
-		mes "The test that I am going to give you will test your knowledge on all of the academic subjects in the world.";
-		mes "I will give you 20 questions, with each question being worth 5 points. When you earn a grade of 80 points, you will pass the test.";
-		next;
-		mes "[Claytos Verdo]";
-		mes "Okay, there's no need to wait. Let's start right away";
-		mes "Oh, and if you don't answer immediately, the test will be cancelled.";
-L_AskQuestions:
+	else if (SAGE_Q == 4 || SAGE_Q == 5) {
+		if (SAGE_Q == 4) {
+			mes "Welcome to the Schweicherbil Magic Academy.";
+			mes "You applied for this test already, didn't you?";
+			next;
+			mes "[Claytos Verdo]";
+			mes "Let's see, your name is " + strcharinfo(PC_NAME) + "...";
+			mes "Okay, let's get started!";
+			next;
+			mes "[Claytos Verdo]";
+			mes "The test that I am going to give you will test your knowledge on all of the academic subjects in the world.";
+			mes "I will give you 20 questions, with each question being worth 5 points. When you earn a grade of 80 points, you will pass the test.";
+			next;
+			mes "[Claytos Verdo]";
+			mes "Okay, there's no need to wait. Let's start right away";
+			mes "Oh, and if you don't answer immediately, the test will be cancelled.";
+		} else if (SAGE_Q == 5) {
+			mes "Welcome back.";
+			mes "So, did you study harder this time?";
+			next;
+			mes "[Claytos Verdo]";
+			mes "You will take the written test under the same conditions as the test you took before. I'll give you 20 questions.";
+			mes "Each correct answer will give you 5 points. When your score reaches 80 points, you pass the test.";
+			next;
+			sage_m2 = rand(1,3);
+			mes "[Claytos Verdo]";
+			mes "Okay, there's no need to wait.";
+			mes "Answer immediately, or I'll fail you again.";
+			SAGE_Q = 5;
+		}
 		next;
 		switch(rand(1,3)) {
 		case 1:
@@ -1025,22 +1039,6 @@ L_AskQuestions:
 		}
 		close;
 	}
-	else if (SAGE_Q == 5) {
-		mes "Welcome back.";
-		mes "So, did you study harder this time?";
-		next;
-		mes "[Claytos Verdo]";
-		mes "You will take the written test under the same conditions as the test you took before. I'll give you 20 questions.";
-		mes "Each correct answer will give you 5 points. When your score reaches 80 points, you pass the test.";
-		next;
-		sage_m2 = rand(1,3);
-		mes "[Claytos Verdo]";
-		mes "Okay, there's no need to wait.";
-		mes "Answer immediately, or I'll fail you again.";
-		SAGE_Q = 5;
-		goto L_AskQuestions;
-		end;
-	}
 	else if (SAGE_Q == 6) {
 		mes "What else do you want?! Do you want to take this test again?";
 		mes "You've already passed!";
diff --git a/npc/merchants/clothes_dyer.txt b/npc/merchants/clothes_dyer.txt
index 431a51cab..4204f600f 100644
--- a/npc/merchants/clothes_dyer.txt
+++ b/npc/merchants/clothes_dyer.txt
@@ -141,7 +141,7 @@ function Dyes;
 			mes " - White: White Dyestuffs";
 			break;
 		case 4:
-			goto L_End;
+			callsub L_End;
 		}
 	}
 
@@ -158,7 +158,7 @@ function Dyes {
 		.@menu$ += "- "+.@DyeName$[getarg(.@i)]+":";
 	.@menu$ += "- ^777777Cancel^000000";
 	.@s = select(.@menu$)-1;
-	if (.@s == (getargcount()/2)+1) goto L_End;
+	if (.@s == (getargcount()/2)+1) callsub L_End;
 	mes .n$;
 	if (.@s == 0) {
 		mes "I can change your dye to";
@@ -172,7 +172,7 @@ function Dyes {
 			mes "Your clothes have been dyed "+.@DyeName$[0]+".";
 			close;
 		case 2:
-			goto L_End;
+			callsub L_End;
 		}
 	}
 	if (!countitem(.@DyeItems[getarg((.@s-1)*2)])) {
diff --git a/npc/other/hugel_bingo.txt b/npc/other/hugel_bingo.txt
index 965405807..9c7b87ee4 100644
--- a/npc/other/hugel_bingo.txt
+++ b/npc/other/hugel_bingo.txt
@@ -96,26 +96,25 @@ OnTouch:
 	@bingo_e4$ = 0;
 	@bingo_e5$ = 0;
 	@bingo_case = 1;
-L_Fill:
-	@bingo_fill = callfunc("Func_Bingo",@bingo_case);
-	if (!@bingo_fill) {
-		mes "The numbers you have entered";
-  		mes "exceed the limit, or you have";
-		mes "already entered these numbers.";
-		mes "Please enter your numbers again.";
-		next;
-	} else if (@bingo_fill) {
-		if(@bingoplate[25] < 10) @bingo_e5$ = "0"+@bingoplate[25]+""; else @bingo_e5$ = @bingoplate[25];
-		donpcevent "start#bingo::OnEnter";
-		mes "["+@bingo_a1$+"] ["+@bingo_a2$+"] ["+@bingo_a3$+"] ["+@bingo_a4$+"] ["+@bingo_a5$+"]";
-		mes "["+@bingo_b1$+"] ["+@bingo_b2$+"] ["+@bingo_b3$+"] ["+@bingo_b4$+"] ["+@bingo_b5$+"]";
-		mes "["+@bingo_c1$+"] ["+@bingo_c2$+"] ["+@bingo_c3$+"] ["+@bingo_c4$+"] ["+@bingo_c5$+"]";
-		mes "["+@bingo_d1$+"] ["+@bingo_d2$+"] ["+@bingo_d3$+"] ["+@bingo_d4$+"] ["+@bingo_d5$+"]";
-		mes "["+@bingo_e1$+"] ["+@bingo_e2$+"] ["+@bingo_e3$+"] ["+@bingo_e4$+"] ["+@bingo_e5$+"]";
-		close;
-
+	while (true) {
+		@bingo_fill = callfunc("Func_Bingo",@bingo_case);
+		if (!@bingo_fill) {
+			mes "The numbers you have entered";
+			mes "exceed the limit, or you have";
+			mes "already entered these numbers.";
+			mes "Please enter your numbers again.";
+			next;
+		} else if (@bingo_fill) {
+			if(@bingoplate[25] < 10) @bingo_e5$ = "0"+@bingoplate[25]+""; else @bingo_e5$ = @bingoplate[25];
+			donpcevent "start#bingo::OnEnter";
+			mes "["+@bingo_a1$+"] ["+@bingo_a2$+"] ["+@bingo_a3$+"] ["+@bingo_a4$+"] ["+@bingo_a5$+"]";
+			mes "["+@bingo_b1$+"] ["+@bingo_b2$+"] ["+@bingo_b3$+"] ["+@bingo_b4$+"] ["+@bingo_b5$+"]";
+			mes "["+@bingo_c1$+"] ["+@bingo_c2$+"] ["+@bingo_c3$+"] ["+@bingo_c4$+"] ["+@bingo_c5$+"]";
+			mes "["+@bingo_d1$+"] ["+@bingo_d2$+"] ["+@bingo_d3$+"] ["+@bingo_d4$+"] ["+@bingo_d5$+"]";
+			mes "["+@bingo_e1$+"] ["+@bingo_e2$+"] ["+@bingo_e3$+"] ["+@bingo_e4$+"] ["+@bingo_e5$+"]";
+			close;
+		}
 	}
-	goto L_Fill;
 }
 
 que_bingo,53,121,0	duplicate(plate1#bingo)	plate2#bingo	HIDDEN_WARP_NPC,1,1
diff --git a/npc/other/marriage.txt b/npc/other/marriage.txt
index bbd659420..0f640af2a 100644
--- a/npc/other/marriage.txt
+++ b/npc/other/marriage.txt
@@ -58,7 +58,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 			mes "married. For now, why";
 			mes "don't you enjoy the simple";
 			mes "pleasures of childhood?";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Marry Happy]";
 		mes "Oh, of course you";
@@ -67,7 +67,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 		mes "are too many laws against";
 		mes "that~ Aren't you the most";
 		mes "adorable little thing?";
-		goto L_End;
+		callsub L_End;
 	}
 	mes "[Marry Happy]";
 	mes "Marriage is the beautiful";
@@ -166,7 +166,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 			mes "If there was something";
 			mes "you didn't understand,";
 			mes "feel free to ask me again.";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Marry Happy]";
 		mes "The easiest way to write";
@@ -262,7 +262,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 				mes "you can consider marriage.";
 				mes "After you grow stronger,";
 				mes "come and talk to me again.";
-				goto L_End;
+				callsub L_End;
 			}
 			else if (countitem(Diamond_Ring) < 1) {
 				mes "[Marry Happy]";
@@ -272,7 +272,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 				mes "during the wedding ceremony?";
 				mes "Look for it carefully and come";
 				mes "back after you find it, okay?";
-				goto L_End;
+				callsub L_End;
 			} else if (Sex == SEX_MALE) {
 				if (Zeny < 1300000) {
 					mes "[Marry Happy]";
@@ -281,7 +281,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 					mes "that all grooms must pay";
 					mes "for the wedding ceremony.";
 					mes "Did you misplace your money?";
-					goto L_End;
+					callsub L_End;
 				}
 				else if (countitem(Tuxedo) < 1) {
 					mes "[Marry Happy]";
@@ -291,7 +291,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 					mes "ceremony! Find it, bring it";
 					mes "to me, and then we can finally";
 					mes "begin the wedding, okay?";
-					goto L_End;
+					callsub L_End;
 				}
 			} else if (Sex == SEX_FEMALE) {
 				if (Zeny < 1200000) {
@@ -302,7 +302,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 					mes "wedding ceremony. Perhaps";
 					mes "you could ask your partner";
 					mes "to help you with the funds?";
-					goto L_End;
+					callsub L_End;
 				}
 				else if (countitem(Wedding_Dress) < 1) {
 					mes "[Marry Happy]";
@@ -312,7 +312,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 					mes "bring it to me-- you";
 					mes "absolutely need it";
 					mes "for the wedding!";
-					goto L_End;
+					callsub L_End;
 				}
 			}
 			mes "[Marry Happy]";
@@ -379,7 +379,7 @@ prt_church,97,100,4	script	Wedding Staff#w	1_F_LIBRARYGIRL,{
 			}
 			delitem Diamond_Ring,1;
 			wedding_sign = 1;
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Marry Happy]";
 		mes "No...?";
@@ -626,7 +626,7 @@ prt_church,100,128,4	script	Bishop#w	1_M_PASTOR,{
 					mes "It's old fashioned protocol,";
 					mes "but I'll admit that it does";
 					mes "keep things running smoothly.";
-					goto L_End;
+					callsub L_End;
 				}
 				mes "[Vomars]";
 				mes "Before you can be";
@@ -635,7 +635,7 @@ prt_church,100,128,4	script	Bishop#w	1_M_PASTOR,{
 				mes "two with your partner.";
 				mes "Then, we can proceed";
 				mes "with the ceremony.";
-				goto L_End;
+				callsub L_End;
 			}
 			mes "[Vomars]";
 			mes "You must apply for";
@@ -644,7 +644,7 @@ prt_church,100,128,4	script	Bishop#w	1_M_PASTOR,{
 			mes "Happy Marry will let you know";
 			mes "what else you'll need to do";
 			mes "to prepare for marriage.";
-			goto L_End;
+			callsub L_End;
 		}
 		else if ($@wedding == 1) {
 			if (wedding_sign == 1) {
@@ -734,7 +734,7 @@ prt_church,100,128,4	script	Bishop#w	1_M_PASTOR,{
 								mes "the ceremony has finished";
 								mes "Please try again once he's";
 								mes "returned.";
-								goto L_End;
+								callsub L_End;
 							}
 							else {
 								cutin "wedding_bomars03",2;
@@ -769,7 +769,7 @@ prt_church,100,128,4	script	Bishop#w	1_M_PASTOR,{
 				mes "application. Please speak";
 				mes "to her so that we can begin";
 				mes "the wedding ceremony.";
-				goto L_End;
+				callsub L_End;
 			}
 			callsub S_Busy;
 		}
@@ -796,14 +796,14 @@ S_Busy:
 		mes "Mister "+ $@wed_groom$;
 		mes "is currently in progress.";
 		mes "Please keep your voice down.";
-		goto L_End;
+		callsub L_End;
 	}
 	mes "[Vomars]";
 	mes "I'm conducting a wedding";
 	mes "for another couple now, so";
 	mes "please wait patiently for your";
 	mes "turn. Thanks for understanding... ";
-	goto L_End;
+	callsub L_End;
 
 OnStop:
 	stopnpctimer;
diff --git a/npc/quests/bard_quest.txt b/npc/quests/bard_quest.txt
index 0c46a9ab6..79eca7720 100644
--- a/npc/quests/bard_quest.txt
+++ b/npc/quests/bard_quest.txt
@@ -166,19 +166,19 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		next;
 		mes "[Errende]";
 		mes "I hope that you'll always remain honest and respectful towards other people, and that you continue to ignore greed for fortune or power.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q > 11 && gef_bard_q < 14) {
 		cutin "bard_eland02",2;
 		mes "[Errende]";
 		mes "It seems you haven't found it yet. Well, take your time, I can wait as long as you want. It doesn't really bore me, since waiting seems to be a part of my profession.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 11) {
 		cutin "bard_eland01",2;
 		mes "[Errende]";
 		mes "Mr. Skezti has a small book store on the book street at the right side of Mineta in Juno. If you show him the seal, he'll help you out.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 10) {
 		cutin "bard_eland01",2;
@@ -208,7 +208,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		mes "show him the Seal of Friendship.";
 		mes "Good luck, now~";
 		gef_bard_q = 11;
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 20) {
 		cutin "bard_eland03",2;
@@ -258,7 +258,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "[Errende]";
 			mes "Waaah, wah~";
 			mes "You can't just ignore me like that! Where's your sense of merriment, your sense of romance?";
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 27) {
@@ -304,7 +304,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "I beseech you, if you meet him, please ask him of the 8th love and inform me of that lyric immediately~";
 			gef_bard_q = 22;
 		}
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 26) {
 		cutin "bard_eland01",2;
@@ -358,17 +358,17 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "in advance~";
 				gef_bard_q = 24;
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther Doubleharmony") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Errende") {
 			cutin "bard_eland04",2;
@@ -377,7 +377,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "If I did, why would";
 			mes "I not know what";
 			mes "this song is about?";
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			mes "[Errende]";
@@ -390,7 +390,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "How could I forget";
 			mes "the 8th love?";
 			gef_bard_q = 26;
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 25) {
@@ -436,7 +436,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "heart wrenching song.";
 				mes "But at what cost to your soul?^000000";
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			cutin "bard_eland01",2;
@@ -447,7 +447,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "Noboooody looooves meee";
 			mes "Friends foooooor never...";
 			mes "Ooooooooh wah!^000000";
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 24) {
@@ -473,7 +473,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		mes "Once again,";
 		mes "thank you so much";
 		mes "for your help.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 22) {
 		mes "[Errende]";
@@ -489,7 +489,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		next;
 		mes "[Errende]";
 		mes "Please ask ^483D8BGunther^000000 about the ^483D8B8th love^000000 in ^483D8BAt One, I Fall in Love^000000. Thank you in advance.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 23) {
 		cutin "bard_eland02",2;
@@ -579,19 +579,19 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "in advance~";
 				gef_bard_q = 24;
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
 			gef_bard_q = 26;
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther Doubleharmony") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
 			gef_bard_q = 26;
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Errende") {
 			cutin "bard_eland04",2;
@@ -601,7 +601,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "I not know what this";
 			mes "song is about?";
 			gef_bard_q = 26;
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			mes "[Errende]";
@@ -614,7 +614,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "How could I forget";
 			mes "the 8th love?";
 			gef_bard_q = 26;
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 21) {
@@ -664,7 +664,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "I beseech you, if you meet him, please ask him of the 8th love and inform me of that lyric immediately~";
 			gef_bard_q = 2;
 		}
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 6) {
 		cutin "bard_eland04",2;
@@ -708,23 +708,23 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "I'll pay you back somehow! Thank you for your trouble in advance~";
 				gef_bard_q = 4;
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther Doubleharmony") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Errende") {
 			cutin "bard_eland04",2;
 			mes "[Errende]";
 			mes "Surely you jest! If I did, why would I not know what this song is about?";
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			mes "[Errende]";
@@ -736,7 +736,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "How could I forget";
 			mes "the 8th love?";
 			gef_bard_q = 6;
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 5) {
@@ -773,7 +773,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "heart wrenching song.";
 				mes "But at what cost to your soul?^000000";
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			cutin "bard_eland01",2;
@@ -784,7 +784,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "Noboooody looooves meee";
 			mes "Friends foooooor never...";
 			mes "Ooooooooooh wah!^000000";
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 4) {
@@ -809,7 +809,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		mes "Once again,";
 		mes "thank you so much";
 		mes "for your help.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 2) {
 		cutin "bard_eland04",2;
@@ -822,7 +822,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 		next;
 		mes "[Errende]";
 		mes "Please ask ^483D8BGunther^000000 about the ^483D8B8th love^000000 in ^483D8BAt One, I Fall in Love^000000. Thank you in advance.";
-		goto L_End;
+		callsub L_End;
 
 	} else if (gef_bard_q == 3) {
 		cutin "bard_eland02",2;
@@ -907,27 +907,27 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 				mes "I'll pay you back somehow! Thank you for your trouble in advance~";
 				gef_bard_q = 4;
 			}
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Gunther") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
 			gef_bard_q = 6;
-			goto L_End;
+			callsub L_End;
 		}
 
 		else if (.@inputstr$ == "Gunther Doubleharmony") {
 			mes "[Errende]";
 			mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that.";
 			gef_bard_q = 6;
-			goto L_End;
+			callsub L_End;
 
 		} else if (.@inputstr$ == "Errende") {
 			cutin "bard_eland04",2;
 			mes "[Errende]";
 			mes "Surely you jest! If I did, why would I not know what this song is about?";
 			gef_bard_q = 6;
-			goto L_End;
+			callsub L_End;
 
 		} else {
 			mes "[Errende]";
@@ -939,7 +939,7 @@ geffen,132,38,3	script	Bard#2	1_M_BARD,{
 			mes "How could I forget";
 			mes "the 8th love?";
 			gef_bard_q = 6;
-			goto L_End;
+			callsub L_End;
 		}
 
 	} else if (gef_bard_q == 1) {
@@ -1122,7 +1122,7 @@ S_StorySong:
 			mes "[Errende]";
 			mes "Oh, how disappointing. But promise me that you will drop by later, so that we can share stories and merriment.";
 		}
-		goto L_End;
+		callsub L_End;
 
 	case 2:
 		mes "[Errende]";
@@ -1156,7 +1156,7 @@ S_StorySong:
 				mes "My apologies,";
 				mes "But I cannot offer my services for free. Even a Bard needs zeny to live, wouldn't you agree?";
 			}
-			goto L_End;
+			callsub L_End;
 
 		case 2:
 			cutin "bard_eland03",2;
@@ -1225,7 +1225,7 @@ S_StorySong:
 					mes "may never know";
 					mes "with certainty.";
 				}
-				goto L_End;
+				callsub L_End;
 
 			} else if (.@random == 2) {
 
@@ -1328,7 +1328,7 @@ S_StorySong:
 						if(gef_bard_q==1) gef_bard_q = 7;
 						if(gef_bard_q==21) gef_bard_q = 27;
 					}
-					goto L_End;
+					callsub L_End;
 
 				}
 				mes "^483D8BA good Bard sings";
@@ -1352,7 +1352,7 @@ S_StorySong:
 				mes "[Errende]";
 				mes "H-how can you say such a thing, "+ @name$ +"? Have you ever been a Bard before? It's difficult to come up with fresh, original melodies!";
 			}
-			goto L_End;
+			callsub L_End;
 
 		case 3:
 			cutin "bard_eland01",2;
@@ -1362,7 +1362,7 @@ S_StorySong:
 			mes "enjoyed when you";
 			mes "are in the mood for it.";
 			mes "Please come again.";
-			goto L_End;
+			callsub L_End;
 
 		}
 
@@ -1371,7 +1371,7 @@ S_StorySong:
 		mes "[Errende]";
 		mes "Hmm~?";
 		mes "Well, alright. Though, listening to a good story or cheerful song can really do you some good. Alright then, see you later.";
-		goto L_End;
+		callsub L_End;
 	}
 }
 
diff --git a/npc/quests/bunnyband.txt b/npc/quests/bunnyband.txt
index 957e3ab01..9b3537312 100644
--- a/npc/quests/bunnyband.txt
+++ b/npc/quests/bunnyband.txt
@@ -101,43 +101,43 @@ alberta,26,229,0	script	Kafra Employee#bunny	4_M_01,{
 			mes "of the Kafra Services~";
 			close;
 		case 2:
-			goto L_Info;
+			break;
 		case 3:
 			close;
 		}
-	}
-	mes "[Kafra Employee]";
-	mes "Hi there~! Would you like";
-	mes "to join our special ^529DFFBunny";
-	mes "Band Event^000000 hosted by the Kafra";
-	mes "Corporation and sponsored by";
-	mes "the Alberta Merchant Guild?";
-	next;
-	switch(select("Join the Event", "Event Information", "Cancel")) {
-	case 1:
-		BUNYBND = 1;
+	} else {
 		mes "[Kafra Employee]";
-		mes "Great! Thanks for";
-		mes "participating! If you";
-		mes "haven't already heard,";
-		mes "you need to collect these";
-		mes "items if you want me put a";
-		mes "Bunny Band together for you...";
+		mes "Hi there~! Would you like";
+		mes "to join our special ^529DFFBunny";
+		mes "Band Event^000000 hosted by the Kafra";
+		mes "Corporation and sponsored by";
+		mes "the Alberta Merchant Guild?";
 		next;
-		mes "[Kafra Employee]";
-		mes "100 Feathers,";
-		mes "1 Four-Leaf Clover,";
-		mes "1 Kitty Band and";
-		mes "1 Pearl. That's it!";
-		mes "Good luck and I'll be";
-		mes "waiting for you here~";
-		close;
-	case 2:
-		break;
-	case 3:
-		close;
+		switch(select("Join the Event", "Event Information", "Cancel")) {
+		case 1:
+			BUNYBND = 1;
+			mes "[Kafra Employee]";
+			mes "Great! Thanks for";
+			mes "participating! If you";
+			mes "haven't already heard,";
+			mes "you need to collect these";
+			mes "items if you want me put a";
+			mes "Bunny Band together for you...";
+			next;
+			mes "[Kafra Employee]";
+			mes "100 Feathers,";
+			mes "1 Four-Leaf Clover,";
+			mes "1 Kitty Band and";
+			mes "1 Pearl. That's it!";
+			mes "Good luck and I'll be";
+			mes "waiting for you here~";
+			close;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
 	}
-L_Info:
 	mes "[Kafra Employee]";
 	mes "To thank our valued";
 	mes "customers, Kafra Corporation";
diff --git a/npc/quests/cooking_quest.txt b/npc/quests/cooking_quest.txt
index 3b97f60ee..048201063 100644
--- a/npc/quests/cooking_quest.txt
+++ b/npc/quests/cooking_quest.txt
@@ -85,7 +85,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "be careful and watch your";
 		mes "step when you climb up";
 		mes "the stairs for me, alright?";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (getequipid(1) != 5026) {
 		if (Sex == SEX_MALE) {
@@ -123,7 +123,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "But I do find that you";
 			mes "adventurers do have";
 			mes "your strong points...";
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_1",0;
 		mes "[Charles Orleans]";
@@ -236,7 +236,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "treats that only I can offer.";
 		mes "Until that day comes, I shall";
 		mes "reluctantly bid you adieu.";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 0) {
 		cutin "orleans_5",0;
@@ -342,7 +342,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "^4D4DFF1 Cooking Oil^000000, and";
 			mes "^4D4DFF1 Old Frying Pan^000000.";
 			mes "Then, we can begin.";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (.@cook_m1 == 2) {
 			cooking_q = 2;
@@ -359,7 +359,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "^4D4DFF2 Red Potions^000000";
 			mes "so that we can";
 			mes "begin the lesson~";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (.@cook_m1 == 3) {
 			cooking_q = 3;
@@ -375,7 +375,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "^4D4DFF1 Honey^000000,";
 			mes "^4D4DFF2 Grapes^000000, and";
 			mes "^4D4DFF1 Red Potion^000000.";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (.@cook_m1 == 4) {
 			cooking_q = 4;
@@ -393,7 +393,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "^4D4DFF1 Bag of Grain^000000,";
 			mes "^4D4DFF10 Spawns^000000, and";
 			mes "^4D4DFF1 Squid Ink^000000.";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (.@cook_m1 == 5) {
 			cooking_q = 5;
@@ -410,7 +410,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "^4D4DFF10 Green Herbs^000000,";
 			mes "^4D4DFF10 Nippers^000000, and";
 			mes "^4D4DFF1 Yellow Potion^000000.";
-			goto L_End;
+			callsub L_End;
 		}
 		cooking_q = 6;
 		mes "[Charles Orleans]";
@@ -426,7 +426,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "^4D4DFF1 Frying Pan^000000,";
 		mes "^4D4DFF5 Yoyo Tails^000000, and";
 		mes "^4D4DFF1 Cooking Oil^000000.";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 1) {
 		if (countitem(Grasshoppers_Leg) > 4 && countitem(Old_Frying_Pan) > 0 && countitem(Cooking_Oil) > 0) {
@@ -467,7 +467,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Cooking_Oil,1;
 			cooking_q = 7;
 			getitem Str_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -479,14 +479,14 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "If a restaurant patron had";
 			mes "ordered this, then you'd";
 			mes "already be making him wait!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "Just go and ambush those";
 		mes "happy-go-lucky grasshoppers";
 		mes "just playing in the fields. Hurry and smash them, then rip their";
 		mes "legs off--but be humane about it! ";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 2) {
 		if (countitem(Grape) > 2 && countitem(Red_Potion) > 1) {
@@ -524,7 +524,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Red_Potion,2;
 			cooking_q = 7;
 			getitem Int_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -535,7 +535,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "ingredients for Grape Juice";
 			mes "Herbal Tea! At a real restaurant, you'd never be able to take your";
 			mes "time like this! Quickly, now!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "Having trouble finding";
@@ -543,7 +543,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "those cute little Poporings...";
 		mes "Of course, you should try to";
 		mes "be humane when you hunt them...";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 3) {
 		if (countitem(Honey) > 0 && countitem(Grape) > 1 && countitem(Red_Potion) > 0) {
@@ -585,7 +585,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Red_Potion,1;
 			cooking_q = 7;
 			getitem Dex_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -596,7 +596,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "brought me the ingredients";
 			mes "to make Honey Grape Juice";
 			mes "a while ago. Hurry it up!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "You're having trouble";
@@ -605,7 +605,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "Just go and hunt some bears,";
 		mes "they're always carrying some";
 		mes "of that Honey around.";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 4) {
 		if (countitem(Grain) > 0 && countitem(Spawn) > 9 && countitem(Chinese_Ink) > 0) {
@@ -646,7 +646,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Chinese_Ink,1; //Chinese_ink
 			cooking_q = 7;
 			getitem Agi_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -657,7 +657,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "preparing ingredients";
 			mes "for Frog Egg and Squid";
 			mes "Ink Soup right now!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "You have to be careful";
@@ -665,7 +665,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "Eggs. If you feed them raw to";
 		mes "somebody, well, their flavor is";
 		mes "decidely less than magnifique.";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 5) {
 		if (countitem(Nipper) > 9 && countitem(Green_Herb) > 9 && countitem(Yellow_Potion) > 0) {
@@ -706,7 +706,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Yellow_Potion,1;
 			cooking_q = 7;
 			getitem Vit_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -718,7 +718,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "Crab Nippers? You need";
 			mes "to work quickly for those";
 			mes "hungry restaurant patrons!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "It shouldn't be too hard";
@@ -726,7 +726,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "find some Vadons and crush";
 		mes "them, making sure to rip off";
 		mes "their Nippers. That sounds strange, I know, but just do it.";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 6) {
 		if (countitem(Yoyo_Tail) > 4 && countitem(Old_Frying_Pan) > 0 && countitem(Cooking_Oil) > 0) {
@@ -767,7 +767,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			delitem Cooking_Oil,1;
 			cooking_q = 7;
 			getitem Luk_Dish01,1;
-			goto L_End;
+			callsub L_End;
 		}
 		cutin "orleans_6",0;
 		.@talk_j = rand(1,2);
@@ -779,7 +779,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "you can. In a real restaurant,";
 			mes "you'd never able to take your";
 			mes "time like this. Toute allure!";
-			goto L_End;
+			callsub L_End;
 		}
 		mes "[Charles Orleans]";
 		mes "You need more tails?";
@@ -788,7 +788,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "and then slice off their tails.";
 		mes "You're a beginner, but I won't";
 		mes "allow you to be inhumane!";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 7) {
 		cutin "orleans_7",0;
@@ -808,7 +808,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "teaching until one of you can";
 		mes "become a worthy successor.";
 		mes "It will take some time...";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 8) {
 		cutin "orleans_5",0;
@@ -847,7 +847,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes ".....Who told you";
 			mes "to ask her name?";
 			mes "You don't even understand what she is saying.";
-			goto L_End;
+			callsub L_End;
 		case 2:
 			cutin "nyuang_2",2;
 			emotion e_pif,0,"Child with Cat#cook";
@@ -863,7 +863,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "the child won't talk to us...";
 			mes "Still, we need to get those";
 			mes "two out of the kitchen.";
-			goto L_End;
+			callsub L_End;
 		case 3:
 			cutin "nyuang_3",2;
 			emotion e_heh,0,"Child with Cat#cook";
@@ -876,7 +876,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "[Charles Orleans]";
 			mes "...Are you playing with that kid...?";
 			mes "...Then I don't need you to be here.";
-			goto L_End;
+			callsub L_End;
 		case 4:
 			emotion e_dots,0,"Child with Cat#cook";
 			mes "[Child with Cat]";
@@ -897,7 +897,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "You should have";
 			mes "been more careful";
 			mes "handling that cat...";
-			goto L_End;
+			callsub L_End;
 		}
 	}
 	else if (cooking_q == 9) {
@@ -1029,7 +1029,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "Ah...";
 		mes "There goes a true";
 		mes "lady... Madam Wickebine...";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 10) {
 		cutin "orleans_5",0;
@@ -1071,7 +1071,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "Praise the glories of the";
 		mes "Rune-Midgarts Kingdom!";
 		mes "Long live King Tristram III!";
-		goto L_End;
+		callsub L_End;
 	}
 	else if (cooking_q == 11) {
 		cutin "orleans_5",0;
@@ -1112,7 +1112,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 				mes "1 to 5. Those are the";
 				mes "only cookbooks that I will";
 				mes "lend out to my students.";
-				goto L_End;
+				callsub L_End;
 			}
 			else if (.@new_book == 0) {
 				cutin "orleans_5",0;
@@ -1122,7 +1122,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 				mes "study the recipes that you";
 				mes "have right now before trying";
 				mes "something new, I suppose.";
-				goto L_End;
+				callsub L_End;
 			}
 			mes "[Charles Orleans]";
 			mes "So you wanted to borrow a";
@@ -1140,7 +1140,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 				mes "levels 1 to 5. Hmm, well, ask";
 				mes "me again when you remember";
 				mes "which cookbook you have, okay?";
-				goto L_End;
+				callsub L_End;
 			}
 			else if (.@old_book == 0) {
 				cutin "orleans_5",0;
@@ -1150,7 +1150,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 				mes "study the recipes that you";
 				mes "have right now before trying";
 				mes "something new, I suppose.";
-				goto L_End;
+				callsub L_End;
 			}
 			else if (.@old_book == .@new_book) {
 				cutin "orleans_4",0;
@@ -1161,7 +1161,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 				mes "cookbook that you already";
 				mes "have? I guess you made";
 				mes "some sort of mistake?";
-				goto L_End;
+				callsub L_End;
 			}
 			else {
 				if (countitem(7471+.@old_book) < 1) {
@@ -1172,7 +1172,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 					mes "that you'd return to me?";
 					mes "Find it first, and then I can";
 					mes "lend another cookbook to you.";
-					goto L_End;
+					callsub L_End;
 				}
 				cutin "orleans_2",0;
 				mes "[Charles Orleans]";
@@ -1264,10 +1264,10 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 						mes "Oh, how I miss the";
 						mes "taste of Pumpkins!";
 						mes "Ahhh, how nostalgic~";
-						goto L_End;
+						callsub L_End;
 					}
 				}
-				else goto L_End;
+				else callsub L_End;
 			}
 			else if (.@new_book== 2) {
 				cutin "orleans_7",0;
@@ -1298,10 +1298,10 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 						mes "soon... But the experience";
 						mes "isn't complete without any";
 						mes "Well-Baked Cookies to munch~";
-						goto L_End;
+						callsub L_End;
 					}
 				}
-				else goto L_End;
+				else callsub L_End;
 			}
 			else if (.@new_book== 3) {
 				cutin "orleans_7",0;
@@ -1330,10 +1330,10 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 						mes "things I don't know";
 						mes "how to make extremely";
 						mes "well. Can you believe that?";
-						goto L_End;
+						callsub L_End;
 					}
 				}
-				else goto L_End;
+				else callsub L_End;
 			}
 			else if (.@new_book== 4) {
 				cutin "orleans_7",0;
@@ -1364,10 +1364,10 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 						mes "of that delicious Bao.";
 						mes "I'd cook it myself, but";
 						mes "I don't know the secret!";
-						goto L_End;
+						callsub L_End;
 					}
 				}
-				else goto L_End;
+				else callsub L_End;
 			}
 			else if (.@new_book== 5) {
 				cutin "orleans_7",0;
@@ -1396,10 +1396,10 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 						mes "cook with those Shoots";
 						mes "soon, so I'd appreciate it";
 						mes "if you'd do this little favor~";
-						goto L_End;
+						callsub L_End;
 					}
 				}
-				else goto L_End;
+				else callsub L_End;
 			}
 
 			if (.@old_book == 1) delitem Cookbook01,1;
@@ -1434,7 +1434,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "good care of it--don't sell";
 			mes "it or lose it or anything like";
 			mes "that. Good luck cooking now~";
-			goto L_End;
+			callsub L_End;
 
 		case 2:
 			cutin "orleans_3",0;
@@ -1462,7 +1462,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "why my spirit to create";
 			mes "culinary masterpieces has";
 			mes "been reinvigorated lately...";
-			goto L_End;
+			callsub L_End;
 
 		case 3:
 			cutin "orleans_5",0;
@@ -1470,7 +1470,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 			mes "Please, do not worry";
 			mes "yourself about it. Just";
 			mes "let me rest for now~";
-			goto L_End;
+			callsub L_End;
 
 		}
 	}
@@ -1479,7 +1479,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	4_M_OILMAN,{
 		mes "Mon dieu!";
 		mes "An error has";
 		mes "occurred!";
-		goto L_End;
+		callsub L_End;
 	}
 
 L_End:
diff --git a/npc/quests/quests_airship.txt b/npc/quests/quests_airship.txt
index c5c8f69b5..8c743d99a 100644
--- a/npc/quests/quests_airship.txt
+++ b/npc/quests/quests_airship.txt
@@ -2831,88 +2831,90 @@ airplane,33,69,4	script	Kaci	1_F_MERCHANT_01,{
 		mes "do it himself. Reading that";
 		mes "letter really made my day~";
 		next;
-L_Ask:
-		switch(select("Ask about Hallen", "Ask about Mawong", "Ask about the Airship")) {
-		case 1:
-			.@mesa = 1;
-			mes "[Kaci]";
-			mes "Hallen? Well, he and I are";
-			mes "pretty close. Did you know";
-			mes "that we're cousins? In fact,";
-			mes "his dad, my uncle, brought";
-			mes "me as a child after my father";
-			mes "passed away 20 years ago.";
-			next;
-			mes "[Kaci]";
-			mes "There was some kind of";
-			mes "mine explosion accident in";
-			mes "Einbech. I don't remember.";
-			mes "Anyway, me and Hallen are";
-			mes "like sister and brother, and";
-			mes "we always stick together.";
-			next;
-			mes "[Kaci]";
-			mes "When Captain Ferlock saw me";
-			mes "host a Dice game by coincidence";
-			mes "and then hired me to work on his Airship, Hallen insisted on coming";
-			mes "along. He's stubborn like that,";
-			mes "but he's also very sweet.";
-			next;
-			break;
-		case 2:
-			.@mesb = 1;
-			mes "[Kaci]";
-			mes "Mr. Mawong? Oh, don't get";
-			mes "the wrong idea! He's my";
-			mes "mentor, the one who taught";
-			mes "me how to play all of these";
-			mes "wonderful games. He's pretty";
-			mes "famous around Juno, you know.";
-			next;
-			mes "[Kaci]";
-			mes "I used to be so depressed,";
-			mes "not caring about the world";
-			mes "at all, after my father died.";
-			mes "Then, I ran into Mr. Mawong,";
-			mes "and he taught me how to find";
-			mes "the joy in life once again.";
-			next;
-			mes "[Kaci]";
-			mes "Because of him, I decided";
-			mes "to learn his games and to";
-			mes "help people forget their";
-			mes "worries and just enjoy";
-			mes "themselves, even if it's";
-			mes "just for a little while.";
-			next;
-			break;
-		case 3:
-			.@mesc = 1;
-			mes "[Kaci]";
-			mes "The Airship? It's so";
-			mes "huge and beautiful, and";
-			mes "I'm always amazed that it";
-			mes "can fly so gracefully through";
-			mes "the air. I've always wanted to live someplace close to the sky...";
-			next;
+		while (true) {
+			switch (select("Ask about Hallen", "Ask about Mawong", "Ask about the Airship")) {
+			case 1:
+				.@mesa = 1;
+				mes "[Kaci]";
+				mes "Hallen? Well, he and I are";
+				mes "pretty close. Did you know";
+				mes "that we're cousins? In fact,";
+				mes "his dad, my uncle, brought";
+				mes "me as a child after my father";
+				mes "passed away 20 years ago.";
+				next;
+				mes "[Kaci]";
+				mes "There was some kind of";
+				mes "mine explosion accident in";
+				mes "Einbech. I don't remember.";
+				mes "Anyway, me and Hallen are";
+				mes "like sister and brother, and";
+				mes "we always stick together.";
+				next;
+				mes "[Kaci]";
+				mes "When Captain Ferlock saw me";
+				mes "host a Dice game by coincidence";
+				mes "and then hired me to work on his Airship, Hallen insisted on coming";
+				mes "along. He's stubborn like that,";
+				mes "but he's also very sweet.";
+				next;
+				break;
+			case 2:
+				.@mesb = 1;
+				mes "[Kaci]";
+				mes "Mr. Mawong? Oh, don't get";
+				mes "the wrong idea! He's my";
+				mes "mentor, the one who taught";
+				mes "me how to play all of these";
+				mes "wonderful games. He's pretty";
+				mes "famous around Juno, you know.";
+				next;
+				mes "[Kaci]";
+				mes "I used to be so depressed,";
+				mes "not caring about the world";
+				mes "at all, after my father died.";
+				mes "Then, I ran into Mr. Mawong,";
+				mes "and he taught me how to find";
+				mes "the joy in life once again.";
+				next;
+				mes "[Kaci]";
+				mes "Because of him, I decided";
+				mes "to learn his games and to";
+				mes "help people forget their";
+				mes "worries and just enjoy";
+				mes "themselves, even if it's";
+				mes "just for a little while.";
+				next;
+				break;
+			case 3:
+				.@mesc = 1;
+				mes "[Kaci]";
+				mes "The Airship? It's so";
+				mes "huge and beautiful, and";
+				mes "I'm always amazed that it";
+				mes "can fly so gracefully through";
+				mes "the air. I've always wanted to live someplace close to the sky...";
+				next;
+				mes "[Kaci]";
+				mes "A place where I can see";
+				mes "the clouds and bask in the";
+				mes "sun. So, when Captain Ferlock";
+				mes "invited me to work here, it was";
+				mes "like a dream come true~";
+				next;
+				break;
+			}
 			mes "[Kaci]";
-			mes "A place where I can see";
-			mes "the clouds and bask in the";
-			mes "sun. So, when Captain Ferlock";
-			mes "invited me to work here, it was";
-			mes "like a dream come true~";
+			mes "Please don't hesitate";
+			mes "to ask me anything if";
+			mes "you need a small favor,";
+			mes "or if you're just curious";
+			mes "about me in general~";
 			next;
-			break;
+			if (.@mesa && .@mesb && .@mesc)
+				break;
 		}
 		mes "[Kaci]";
-		mes "Please don't hesitate";
-		mes "to ask me anything if";
-		mes "you need a small favor,";
-		mes "or if you're just curious";
-		mes "about me in general~";
-		next;
-		if (!.@mesa || !.@mesb || !.@mesc) goto L_Ask;
-		mes "[Kaci]";
 		mes "By the way, if Hallen";
 		mes "bothers you with another";
 		mes "request, please refuse to";
@@ -3077,7 +3079,6 @@ OnTouch:
 		}
 		while (1) {
 			while (1) {
-L_Retry:
 				next;
 				input @input;
 				if (@input < 100 || @input > 999) {
@@ -3218,7 +3219,6 @@ L_Retry:
 				case 3: mes "Initialing 4th attempt...^000000"; break;
 				case 4: mes "Initialing final attempt...^000000"; break;
 			}
-			goto L_Retry;
 		}
 	}
 	end;
diff --git a/npc/quests/quests_lighthalzen.txt b/npc/quests/quests_lighthalzen.txt
index 0a80c25ae..d2df83768 100644
--- a/npc/quests/quests_lighthalzen.txt
+++ b/npc/quests/quests_lighthalzen.txt
@@ -7737,136 +7737,138 @@ yuno_pre,69,79,4	script	Mr. President	4_M_PRESIDENT,{
 		mes "Now, I'm sure that you must";
 		mes "have some questions for me...";
 		next;
-L_Mission:
-		switch( select( "Secret Wing's Background","Rekenber's Purpose","Secret Wing's Goal","Details about my mission","I'm ready for my mission." ) )
-		{
-			case 1:
-				mes "[Karl]";
-				mes "Rekenber has been";
-				mes "unopposed for a very long";
-				mes "time. Our nation is unhappy";
-				mes "with their rule, but since our";
-				mes "country lacks solidarity, the";
-				mes "people can do nothing.";
-				next;
-				mes "[Karl]";
-				mes "But one day, I was contacted";
-				mes "by some people who claimed to";
-				mes "share my sentiments against";
-				mes "the Rekenber Corporation.";
-				mes "Later, I learned that they were";
-				mes "from the Kafra Corporation.";
-				next;
-				mes "[Karl]";
-				mes "Apparently, they were";
-				mes "facing some aggressive";
-				mes "competition from Cool";
-				mes "Event Corp, which is";
-				mes "actually backed by the";
-				mes "Rekenber Corporation.";
-				next;
-				mes "[Karl]";
-				mes "We decided to pool our";
-				mes "resources to deal with what";
-				mes "we perceived as a common";
-				mes "enemy. Before long, we gathered";
-				mes "more devotees to our cause and";
-				mes "formed the ''Secret Wing.''";
-				next;
-				mes "[Karl]";
-				mes "It may be helpful for";
-				mes "you to know that our";
-				mes "direct contact to the";
-				mes "Kafra Corporation is the";
-				mes "^FF00003rd Security Team^000000. Oh, did";
-				mes "you have any other questions?";
-				next;
-				goto L_Mission;
+		while (true) {
+			switch( select( "Secret Wing's Background","Rekenber's Purpose","Secret Wing's Goal","Details about my mission","I'm ready for my mission." ) )
+			{
+				case 1:
+					mes "[Karl]";
+					mes "Rekenber has been";
+					mes "unopposed for a very long";
+					mes "time. Our nation is unhappy";
+					mes "with their rule, but since our";
+					mes "country lacks solidarity, the";
+					mes "people can do nothing.";
+					next;
+					mes "[Karl]";
+					mes "But one day, I was contacted";
+					mes "by some people who claimed to";
+					mes "share my sentiments against";
+					mes "the Rekenber Corporation.";
+					mes "Later, I learned that they were";
+					mes "from the Kafra Corporation.";
+					next;
+					mes "[Karl]";
+					mes "Apparently, they were";
+					mes "facing some aggressive";
+					mes "competition from Cool";
+					mes "Event Corp, which is";
+					mes "actually backed by the";
+					mes "Rekenber Corporation.";
+					next;
+					mes "[Karl]";
+					mes "We decided to pool our";
+					mes "resources to deal with what";
+					mes "we perceived as a common";
+					mes "enemy. Before long, we gathered";
+					mes "more devotees to our cause and";
+					mes "formed the ''Secret Wing.''";
+					next;
+					mes "[Karl]";
+					mes "It may be helpful for";
+					mes "you to know that our";
+					mes "direct contact to the";
+					mes "Kafra Corporation is the";
+					mes "^FF00003rd Security Team^000000. Oh, did";
+					mes "you have any other questions?";
+					next;
+					break;
 
-			case 2:
-				mes "[Karl]";
-				mes "It's true that companies";
-				mes "exist to create money, but";
-				mes "the Rekenber Corporation";
-				mes "is much more nefarious.";
-				mes "They actually want to dominate the entire Rune-Midgard continent.";
-				next;
-				mes "[Karl]";
-				mes "In fact, the chairman of";
-				mes "that company is shrouded";
-				mes "in mystery. Although I'm";
-				mes "the president, I go through";
-				mes "many difficulties just to";
-				mes "send a message to him.";
-				next;
-				mes "[Karl]";
-				mes "It's disheartening,";
-				mes "but we really have no";
-				mes "idea what their true goals";
-				mes "and plans might be. Now, did";
-				mes "you have any other questions?";
-				next;
-				goto L_Mission;
+				case 2:
+					mes "[Karl]";
+					mes "It's true that companies";
+					mes "exist to create money, but";
+					mes "the Rekenber Corporation";
+					mes "is much more nefarious.";
+					mes "They actually want to dominate the entire Rune-Midgard continent.";
+					next;
+					mes "[Karl]";
+					mes "In fact, the chairman of";
+					mes "that company is shrouded";
+					mes "in mystery. Although I'm";
+					mes "the president, I go through";
+					mes "many difficulties just to";
+					mes "send a message to him.";
+					next;
+					mes "[Karl]";
+					mes "It's disheartening,";
+					mes "but we really have no";
+					mes "idea what their true goals";
+					mes "and plans might be. Now, did";
+					mes "you have any other questions?";
+					next;
+					break;
 
-			case 3:
-				mes "[Karl]";
-				mes "''Secret Wing's'' only";
-				mes "goal is to destroy the";
-				mes "Rekenber Corporation in";
-				mes "order to break the Schwaltzvalt Republic free from its oppression.";
-				next;
-				mes "[Karl]";
-				mes "Of course, we realize";
-				mes "that it will take time and";
-				mes "a lot of sacrifice to make";
-				mes "this a reality. Now, do you";
-				mes "have anything else to ask?";
-				next;
-				goto L_Mission;
+				case 3:
+					mes "[Karl]";
+					mes "''Secret Wing's'' only";
+					mes "goal is to destroy the";
+					mes "Rekenber Corporation in";
+					mes "order to break the Schwaltzvalt Republic free from its oppression.";
+					next;
+					mes "[Karl]";
+					mes "Of course, we realize";
+					mes "that it will take time and";
+					mes "a lot of sacrifice to make";
+					mes "this a reality. Now, do you";
+					mes "have anything else to ask?";
+					next;
+					break;
 
-			case 4:
-				mes "[Karl]";
-				mes "Ah, your next mission.";
-				mes "I'm ready to give you";
-				mes "some of the details if";
-				mes "you no longer have any";
-				mes "questions to ask. Let me";
-				mes "know when you are ready.";
-				next;
-				goto L_Mission;
+				case 4:
+					mes "[Karl]";
+					mes "Ah, your next mission.";
+					mes "I'm ready to give you";
+					mes "some of the details if";
+					mes "you no longer have any";
+					mes "questions to ask. Let me";
+					mes "know when you are ready.";
+					next;
+					break;
 
-			case 5:
-				mes "[Karl]";
-				mes "Very well, then.";
-				mes "Your mission will not";
-				mes "be too difficult, but it does";
-				mes "have great urgency so you";
-				mes "must accomplish it as soon";
-				mes "as you can. Understood?";
-				next;
-				switch( select( "Wait, I have one more question!","Yes sir, Mr. President." ) )
-				{
-					case 1:
-						mes "[Karl]";
-						mes "Hm? I thought you";
-						mes "didn't have any more";
-						mes "questions. However, I still";
-						mes "have the luxury to give you";
-						mes "any answers that I can provide.";
-						next;
-						goto L_Mission;
+				case 5:
+					mes "[Karl]";
+					mes "Very well, then.";
+					mes "Your mission will not";
+					mes "be too difficult, but it does";
+					mes "have great urgency so you";
+					mes "must accomplish it as soon";
+					mes "as you can. Understood?";
+					next;
+					switch( select( "Wait, I have one more question!","Yes sir, Mr. President." ) )
+					{
+						case 1:
+							mes "[Karl]";
+							mes "Hm? I thought you";
+							mes "didn't have any more";
+							mes "questions. However, I still";
+							mes "have the luxury to give you";
+							mes "any answers that I can provide.";
+							next;
+							break;
 
-					case 2:
-						mes "[Karl]";
-						mes "I'm glad to hear that.";
-						mes "Alright, give me a second";
-						mes "to search for this file before";
-						mes "I explain the mission.";
-						lhz_boss = 15;
-						close2;
-						cutin "",255;
-						end;
-				}
+						case 2:
+							mes "[Karl]";
+							mes "I'm glad to hear that.";
+							mes "Alright, give me a second";
+							mes "to search for this file before";
+							mes "I explain the mission.";
+							lhz_boss = 15;
+							close2;
+							cutin "",255;
+							end;
+					}
+					break;
+			}
 		}
 	}
 	else if(lhz_boss == 15)
@@ -9690,68 +9692,68 @@ OnTouch:
 							mes "You need to input the correct";
 							mes "password to open the door.^000000";
 							next;
-L_Enter:
-							input @sneakpass;
-							if(@sneakpass == 738495)
-							{
-								mes "^3355FF*Beep~*";
-								mes "You hear a pleasant";
-								mes "sounding electronic chirp,";
-								mes "signaling that you have input";
-								mes "the correct password. The door";
-								mes "automatically slides open.";
+							while (true) {
+								input @sneakpass;
+								if(@sneakpass == 738495)
+								{
+									mes "^3355FF*Beep~*";
+									mes "You hear a pleasant";
+									mes "sounding electronic chirp,";
+									mes "signaling that you have input";
+									mes "the correct password. The door";
+									mes "automatically slides open.";
+									next;
+									switch( select( "Enter","Retreat" ) )
+									{
+										case 1:
+											mes "[Security System]";
+											mes "You have 3 minutes to";
+											mes "search the Information Archive.";
+											mes "When this time elapses, you";
+											mes "will be automatically sent";
+											mes "outside for security reasons.";
+											close2;
+											lhz_boss = 29;
+											donpcevent "Timer_Sneak::OnEnter";
+											warp "lhz_in01",177,35;
+											end;
+
+										case 2:
+											mes "^3355FFPerhaps now would";
+											mes "not be the best time to";
+											mes "enter the Secret Archive.";
+											mes "Or at least, that's what";
+											mes "you've decided for yourself.^000000";
+											close;
+									}
+								}
+								mes "^3355FF*Eeeeeee*";
+								mes "The door emits an";
+								mes "unnerving, high pitched";
+								mes "screech after you input";
+								mes "the password. You really";
+								mes "should try to input it again.^000000";
+								++@sneakerror;
 								next;
-								switch( select( "Enter","Retreat" ) )
+								if(@sneakerror > 2)
 								{
-									case 1:
 										mes "[Security System]";
-										mes "You have 3 minutes to";
-										mes "search the Information Archive.";
-										mes "When this time elapses, you";
-										mes "will be automatically sent";
-										mes "outside for security reasons.";
+										mes "*Gzzzzz*";
+										mes "You have entered the";
+										mes "password incorrectly";
+										mes "3 times. Please stand by";
+										mes "for managerial assistance.";
+										next;
+										mes "^3355FFUh oh!";
+										mes "You better get";
+										mes "out of here before";
+										mes "you get caught!^000000";
 										close2;
-										lhz_boss = 29;
-										donpcevent "Timer_Sneak::OnEnter";
-										warp "lhz_in01",177,35;
+										warp "lhz_in01",191,49;
 										end;
-
-									case 2:
-										mes "^3355FFPerhaps now would";
-										mes "not be the best time to";
-										mes "enter the Secret Archive.";
-										mes "Or at least, that's what";
-										mes "you've decided for yourself.^000000";
-										close;
 								}
-							}
-							mes "^3355FF*Eeeeeee*";
-							mes "The door emits an";
-							mes "unnerving, high pitched";
-							mes "screech after you input";
-							mes "the password. You really";
-							mes "should try to input it again.^000000";
-							++@sneakerror;
-							next;
-							if(@sneakerror > 2)
-							{
-									mes "[Security System]";
-									mes "*Gzzzzz*";
-									mes "You have entered the";
-									mes "password incorrectly";
-									mes "3 times. Please stand by";
-									mes "for managerial assistance.";
-									next;
-									mes "^3355FFUh oh!";
-									mes "You better get";
-									mes "out of here before";
-									mes "you get caught!^000000";
-									close2;
-									warp "lhz_in01",191,49;
-									end;
-							}
 
-							goto L_Enter;
+							}
 
 						case 2:
 							mes "^3355FFPerhaps now would";
@@ -9812,113 +9814,114 @@ lhz_in01,182,35,0	script	File Search Engine	HIDDEN_NPC,{
 		mes "keywords to in order to find";
 		mes "specific file locations.";
 		next;
-L_Search:
-		switch( select( "Search Engine.","Cancel." ) )
-		{
-			case 1:
-				mes "^663300- Search Engine Initiated -";
-				mes "- Please enter a keyword -";
-				mes " ";
-				mes "*Search Engine";
-				mes "is case sensitve.";
-				mes "Please do not use";
-				mes "capital letters.^000000";
-				next;
-				input @sneaksearch$;
-				if((@sneaksearch$ == "kafra") || (@sneaksearch$ == "cool event"))
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "Kafra Corporation and";
-					mes "Cool Event Corp are";
-					mes "located in Arena 3-2.^000000";
-					lhz_boss = 30;
-					close;
-				}
-				else if(@sneaksearch$ == "shinokas")
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "Shinokas are located";
-					mes "in Arena 1-5.^000000";
-					lhz_boss = 31;
-					close;
-				}
-				else if((@sneaksearch$ == "stein") || (@sneaksearch$ == "STEIN") || (@sneaksearch$ == "S.T.E.I.N"))
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "S.T.E.I.N are considered";
-					mes "highly classified and";
-					mes "cannot be accessed";
-					mes "through this system.^000000";
-					close;
-				}
-				else if(@sneaksearch$ == "ymir")
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "Ymir's Heart are ranked";
-					mes "as highly classified and";
-					mes "cannot be accessed";
-					mes "through this system.^000000";
-					close;
-				}
-				else if((@sneaksearch$ == "president") || (@sneaksearch$ == "karl") || (@sneaksearch$ == "weierstrass"))
-				{
-					mes "^663300[Search Result]";
-					mes "2nd Class documents on";
-					mes "President Karl Weierstrass";
-					mes "are located in Area 1-7. For";
-					mes "more highly classified files";
-					mes "on Weierstrass, please use";
-					mes "a higher security archive.^000000";
-					lhz_boss = 32;
-					close;
-				}
-				else if(@sneaksearch$ == "einbroch")
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "Einbroch are stored";
-					mes "in Area 6-1.^000000";
-					lhz_boss = 33;
-					close;
-				}
-				else if(@sneaksearch$ == "lighthalzen")
-				{
-					mes "^663300[Search Result]" ;
-					mes "Documents regarding";
-					mes "Lighthalzen are stored";
-					mes "in Area 3-3.^000000";
-					lhz_boss = 34;
-					close;
-				}
-				else if(@sneaksearch$ == "rekenber")
-				{
-					mes "^663300[Search Result]";
-					mes "Documents regarding";
-					mes "Rekenber are highly classified and cannot be accessed by this system.^000000";
+		while (true) {
+			switch( select( "Search Engine.","Cancel." ) )
+			{
+				case 1:
+					mes "^663300- Search Engine Initiated -";
+					mes "- Please enter a keyword -";
+					mes " ";
+					mes "*Search Engine";
+					mes "is case sensitve.";
+					mes "Please do not use";
+					mes "capital letters.^000000";
 					next;
-					goto L_Search;
-				}
-				else
-				{
-					mes "^663300[Search Result]";
-					mes "Keyword not found.";
-					mes "Please search another";
-					mes "archive or increase";
-					mes "access permissions.^000000";
-					close;
-				}
+					input @sneaksearch$;
+					if((@sneaksearch$ == "kafra") || (@sneaksearch$ == "cool event"))
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "Kafra Corporation and";
+						mes "Cool Event Corp are";
+						mes "located in Arena 3-2.^000000";
+						lhz_boss = 30;
+						close;
+					}
+					else if(@sneaksearch$ == "shinokas")
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "Shinokas are located";
+						mes "in Arena 1-5.^000000";
+						lhz_boss = 31;
+						close;
+					}
+					else if((@sneaksearch$ == "stein") || (@sneaksearch$ == "STEIN") || (@sneaksearch$ == "S.T.E.I.N"))
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "S.T.E.I.N are considered";
+						mes "highly classified and";
+						mes "cannot be accessed";
+						mes "through this system.^000000";
+						close;
+					}
+					else if(@sneaksearch$ == "ymir")
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "Ymir's Heart are ranked";
+						mes "as highly classified and";
+						mes "cannot be accessed";
+						mes "through this system.^000000";
+						close;
+					}
+					else if((@sneaksearch$ == "president") || (@sneaksearch$ == "karl") || (@sneaksearch$ == "weierstrass"))
+					{
+						mes "^663300[Search Result]";
+						mes "2nd Class documents on";
+						mes "President Karl Weierstrass";
+						mes "are located in Area 1-7. For";
+						mes "more highly classified files";
+						mes "on Weierstrass, please use";
+						mes "a higher security archive.^000000";
+						lhz_boss = 32;
+						close;
+					}
+					else if(@sneaksearch$ == "einbroch")
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "Einbroch are stored";
+						mes "in Area 6-1.^000000";
+						lhz_boss = 33;
+						close;
+					}
+					else if(@sneaksearch$ == "lighthalzen")
+					{
+						mes "^663300[Search Result]" ;
+						mes "Documents regarding";
+						mes "Lighthalzen are stored";
+						mes "in Area 3-3.^000000";
+						lhz_boss = 34;
+						close;
+					}
+					else if(@sneaksearch$ == "rekenber")
+					{
+						mes "^663300[Search Result]";
+						mes "Documents regarding";
+						mes "Rekenber are highly classified and cannot be accessed by this system.^000000";
+						next;
+						break;
+					}
+					else
+					{
+						mes "^663300[Search Result]";
+						mes "Keyword not found.";
+						mes "Please search another";
+						mes "archive or increase";
+						mes "access permissions.^000000";
+						close;
+					}
 
-			case 2:
-				mes "^663300[Search Engine Close]";
-				mes "File search has been";
-				mes "canceled. Please be aware";
-				mes "that sudden shutdown may";
-				mes "cause system errors.^000000";
-				close;
+				case 2:
+					mes "^663300[Search Engine Close]";
+					mes "File search has been";
+					mes "canceled. Please be aware";
+					mes "that sudden shutdown may";
+					mes "cause system errors.^000000";
+					close;
+			}
 		}
 	}
 	mes "^3355FFThis machine can be";
diff --git a/npc/quests/quests_rachel.txt b/npc/quests/quests_rachel.txt
index f2282106e..59baa6f04 100644
--- a/npc/quests/quests_rachel.txt
+++ b/npc/quests/quests_rachel.txt
@@ -3817,7 +3817,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 				mes "wouldn't come here to pray...";
 				mes "Well, I hope you enjoy your";
 				mes "time here, adventurer.";
-				goto L_End;
+				callsub L_End;
 			}
 			mes "[Priestess Nemma]";
 			mes "Oh! I'm glad to see that";
@@ -3870,7 +3870,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 				mes "all your journeys. May the";
 				mes "grace of the goddess always";
 				mes "support us in all that we do~";
-				goto L_End;
+				callsub L_End;
 			}
 			mes "[Priestess Nemma]";
 			mes "Great! How much would you";
@@ -3899,7 +3899,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 				mes "protecting you, wherever you go~";
 				break;
 			}
-			goto L_End;
+			callsub L_End;
 		}
 		else {
 			cutin "ra_nemma03",2;
@@ -3940,7 +3940,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 					mes "protecting you, wherever you go~";
 					break;
 				}
-				goto L_End;
+				callsub L_End;
 			case 2:
 				mes "[Priestess Nemma]";
 				mes "Oh! If you'd like some";
@@ -3969,7 +3969,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 				mes "Oh, how sweet of you~";
 				break;
 			}
-			goto L_End;
+			callsub L_End;
 		}
 	}
 	else {
@@ -3977,7 +3977,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			cutin "ra_nemma01",2;
 			mes "[Priestess Nemma]";
 			mes "Welcome to our temple!";
-			goto L_End;
+			callsub L_End;
 		}
 		if (ra_tem_q < 1) {
 			mes "[Priestess Nemma]";
@@ -4010,7 +4010,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			mes "to go inside. ^333333*Sob*^000000 P-Panno!";
 			mes "Panno, I neeeed heeeeelp~!";
 			ra_tem_q = 1;
-			goto L_End;
+			callsub L_End;
 		}
 		else if ((ra_tem_q >= 1) && (ra_tem_q < 10)) {
 			mes "[Priestess Nemma]";
@@ -4025,7 +4025,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			mes "Panno would know";
 			mes "what to do... I think.";
 			mes "Ooh, Panno, help me!";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (ra_tem_q == 10) {
 			cutin "ra_nemma04",2;
@@ -4051,7 +4051,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			mes "I'm outside. What if";
 			mes "the gate locks up again?";
 			mes "Oooh, what should I do?!";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (ra_tem_q == 11) {
 			emotion e_ho;
@@ -4063,7 +4063,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			mes "longer asking for donations,";
 			mes "but you can still redeem your";
 			mes "Lottery Tickets inside, okay?";
-			goto L_End;
+			callsub L_End;
 		}
 		else if (ra_tem_q == 12) {
 			mes "[Priestess Nemma]";
@@ -4090,7 +4090,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 			mes "like, ^FF000020 of them^000000! Thank";
 			mes "you thank you thank you!";
 			ra_tem_q = 13;
-			goto L_End;
+			callsub L_End;
 		}
 		else if (ra_tem_q == 13) {
 			mes "[Priestess Nemma]";
@@ -4125,7 +4125,7 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 					mes "to play! Hm, maybe";
 					mes "our pope would like";
 					mes "to see these too?";
-					goto L_End;
+					callsub L_End;
 				}
 				cutin "ra_nemma02",2;
 				mes "[Priestess Nemma]";
@@ -4144,14 +4144,14 @@ ra_temple,116,174,3	script	Nemma#ra_temple	4_F_TRAINEE,{
 				mes "have much to pay you";
 				mes "back with, anyway~";
 			}
-			goto L_End;
+			callsub L_End;
 		}
 		else {
 			cutin "ra_nemma01",2;
 			mes "[Priestess Nemma]";
 			mes "Welcome to our temple!";
 		}
-		goto L_End;
+		callsub L_End;
 	}
 
 L_End:
@@ -6318,15 +6318,16 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 		mes "Have you come to";
 		mes "redeem Lottery Tickets?";
 		next;
-		if (select("Yes", "No") == 1) goto L_Lottery;
-		if (ra_tem_q == 12) {
-			cutin "ra_fano01",2;
-			mes "[Priestess Panno]";
-			mes "I already told you";
-			mes "everything I know.";
-			mes "Remember to keep";
-			mes "quiet about what I said.";
-			goto L_End;
+		if (select("Yes", "No") == 2) {
+			if (ra_tem_q == 12) {
+				cutin "ra_fano01",2;
+				mes "[Priestess Panno]";
+				mes "I already told you";
+				mes "everything I know.";
+				mes "Remember to keep";
+				mes "quiet about what I said.";
+				callsub L_End;
+			}
 		}
 	}
 	else if (ra_tem_q < 2) {
@@ -6347,15 +6348,17 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 			mes "know, in case you were saving";
 			mes "them for some weird reason.";
 			next;
-			if (select("Yes", "No") == 1) goto L_Lottery;
-			cutin "ra_fano03",2;
-			mes "[Priestess Panno]";
-			mes "You can redeem your";
-			mes "Lottery Tickets at any";
-			mes "time, so please visit";
-			mes "me at your leisure.";
-			mes "Go with Freya.";
-			goto L_End;
+			if (select("Yes", "No") == 2) {
+				cutin "ra_fano03",2;
+				mes "[Priestess Panno]";
+				mes "You can redeem your";
+				mes "Lottery Tickets at any";
+				mes "time, so please visit";
+				mes "me at your leisure.";
+				mes "Go with Freya.";
+				callsub L_End;
+			}
+			break;
 
 		case 2:
 			cutin "ra_fano01",2;
@@ -6394,14 +6397,14 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 			mes "side of the hallway. However,";
 			mes "you can only enter if you've";
 			mes "been permitted beforehand.";
-			goto L_End;
+			callsub L_End;
 
 		case 3:
 			mes "[Priestess Panno]";
 			mes "......................";
 			mes "No chit-chat";
 			mes "inside the temple.";
-			goto L_End;
+			callsub L_End;
 		}
 	}
 	else if (ra_tem_q == 10) {
@@ -6429,14 +6432,16 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 			mes "know, in case you were saving";
 			mes "them for some weird reason.";
 			next;
-			if (select("Yes", "No") == 1) goto L_Lottery;
-			mes "[Priestess Panno]";
-			mes "You can redeem your";
-			mes "Lottery Tickets at any";
-			mes "time, so please visit";
-			mes "me at your leisure.";
-			mes "Go with Freya.";
-			goto L_End;
+			if (select("Yes", "No") == 2) {
+				mes "[Priestess Panno]";
+				mes "You can redeem your";
+				mes "Lottery Tickets at any";
+				mes "time, so please visit";
+				mes "me at your leisure.";
+				mes "Go with Freya.";
+				callsub L_End;
+			}
+			break;
 
 		case 2:
 			cutin "ra_fano01",2;
@@ -6475,7 +6480,7 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 			mes "side of the hallway. However,";
 			mes "you can only enter if you've";
 			mes "been permitted beforehand.";
-			goto L_End;
+			callsub L_End;
 
 		case 3:
 			cutin "ra_fano02",2;
@@ -6522,7 +6527,7 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 			mes "[Priestess Panno]";
 			mes ".........";
 			ra_tem_q = 11;
-			goto L_End;
+			callsub L_End;
 		}
 	}
 	else if (ra_tem_q == 11) {
@@ -6657,17 +6662,17 @@ ra_temin,170,46,3	script	Panno#rachel	4_F_TRAINEE,{
 		mes "Excuse me now, I need";
 		mes "to get back to work.";
 		ra_tem_q = 12;
-		goto L_End;
+		callsub L_End;
+	}
+	else {
+		cutin "ra_fano02",2;
+		mes "[Priestess Panno]";
+		mes "This is a holy place";
+		mes "Behave yourself, and";
+		mes "respect those who have";
+		mes "come here just to worship.";
+		callsub L_End;
 	}
-	cutin "ra_fano02",2;
-	mes "[Priestess Panno]";
-	mes "This is a holy place";
-	mes "Behave yourself, and";
-	mes "respect those who have";
-	mes "come here just to worship.";
-	goto L_End;
-
-L_Lottery:
 	if(checkweight(Yggdrasilberry,1) == 0){
 		cutin "ra_fano02",2;
 		mes "[Priestess Panno]";
@@ -6677,7 +6682,7 @@ L_Lottery:
 		mes "something large, unwieldy";
 		mes "and heavy? Put your junk";
 		mes "away in Storage first.";
-		goto L_End;
+		callsub L_End;
 	}
 	mes "[Priestess Panno]";
 	mes "Here we go";
@@ -6713,7 +6718,7 @@ L_Lottery:
 		else if (.@bonus_donate > 5 && .@bonus_donate < 11) getitem Honey,1;	//Honey 5%
 		else if (.@bonus_donate > 0 && .@bonus_donate < 6) getitem Royal_Jelly,1;	//Royal Jelly 5%
 		else getitem White_Slim_Potion,1; //Condensed White Potion 39%
-		goto L_End;
+		callsub L_End;
 	}
 	mes "[Priestess Panno]";
 	mes "You...";
@@ -6733,7 +6738,7 @@ L_Lottery:
 	cutin "ra_fano03",2;
 	mes "[Priestess Panno]";
 	mes "May Freya be with you.";
-	goto L_End;
+	callsub L_End;
 
 L_End:
 	close2;
@@ -7441,8 +7446,8 @@ OnTouch:
 }
 
 rachel,142,167,5	script	Seeking Follower#rachel	4_F_MASK1,6,6,{
+OnTouch:
 	if ((lost_boy == 13) && (ra_tem_q == 20)) {
-		L_Mes:
 		mes "[Arunafeltz Follower]";
 		mes "Excuse me, but";
 		mes "are you "+strcharinfo(PC_NAME)+"?";
@@ -7469,8 +7474,5 @@ rachel,142,167,5	script	Seeking Follower#rachel	4_F_MASK1,6,6,{
 		mes "on your journeys...";
 		close;
 	}
-
-OnTouch:
-	if ((lost_boy == 13) && (ra_tem_q == 20)) goto L_Mes;
 	end;
 }
diff --git a/npc/quests/thana_quest.txt b/npc/quests/thana_quest.txt
index 4c42f6b39..53c7b331f 100644
--- a/npc/quests/thana_quest.txt
+++ b/npc/quests/thana_quest.txt
@@ -265,7 +265,7 @@ tha_t01,149,78,4	script	Guide	4_F_01,{
 				mes "to access the higher levels";
 				mes "here in Thanatos Tower.";
 				next;
-				goto L_Contract;
+				break;
 			case 3:
 				mes "[Ditze]";
 				mes "To develop the floors above";
@@ -276,6 +276,7 @@ tha_t01,149,78,4	script	Guide	4_F_01,{
 				mes "for us under a temp contract?";
 				close;
 			}
+			break;
 		case 2:
 			mes "[Ditze]";
 			mes "You may have already heard";
@@ -291,7 +292,7 @@ tha_t01,149,78,4	script	Guide	4_F_01,{
 			mes "to access the higher levels";
 			mes "here in Thanatos Tower.";
 			next;
-			goto L_Contract;
+			break;
 		case 3:
 			mes "[Ditze]";
 			mes "Well, if you have any";
@@ -300,16 +301,15 @@ tha_t01,149,78,4	script	Guide	4_F_01,{
 			mes "Ditze Lappa. Have a good day!";
 			close;
 		}
+	} else {
+		mes "[Ditze]";
+		mes "For more detailed information";
+		mes "about monster exterminations,";
+		mes "please ask the 2nd Floor Guide";
+		mes "and the Guide next to me. Well,";
+		mes "we hope you enjoy your experience working with Rekenber Corporation~";
+		close;
 	}
-	mes "[Ditze]";
-	mes "For more detailed information";
-	mes "about monster exterminations,";
-	mes "please ask the 2nd Floor Guide";
-	mes "and the Guide next to me. Well,";
-	mes "we hope you enjoy your experience working with Rekenber Corporation~";
-	close;
-
-L_Contract:
 	switch(select("Maybe next time", "Sure, I'd like to work for you.")) {
 	case 1:
 		mes "[Ditze]";
@@ -930,7 +930,6 @@ tha_t03,67,70,0	script	Rune Device#tt1	HIDDEN_NPC,4,4,{
 				mes "field fizzles out with a soft,";
 				mes "gentle ''pzzzzzh'' sound.^000000";
 				next;
-				goto L_Key;
 			}
 			else if (getequipweaponlv(4) == 4) {
 				mes "^3355FFWith your "+getequipname(4)+" in";
@@ -939,7 +938,6 @@ tha_t03,67,70,0	script	Rune Device#tt1	HIDDEN_NPC,4,4,{
 				mes "field fizzles out with a soft,";
 				mes "gentle ''pzzzzzh'' sound.^000000";
 				next;
-				goto L_Key;
 			}
 			else {
 				mes "^3355FFYou smash the energy";
@@ -951,21 +949,16 @@ tha_t03,67,70,0	script	Rune Device#tt1	HIDDEN_NPC,4,4,{
 				mes "powerful weapon...^000000";
 				close;
 			}
+			break;
 		case 2:
 			mes "^3355FFYou decide to leave";
 			mes "the machine alone.^000000";
 			close;
 		}
+	} else {
+		mes "You've acquired everything you need from this rune device.";
+		close;
 	}
-	mes "You've acquired everything you need from this rune device.";
-	close;
-
-OnTouch:
-	if ((countitem(Key_Red) == 0) && (countitem(Magic_Gem_Red) == 0))
-		specialeffect EF_LEVEL99_4;
-	end;
-
-L_Key:
 	specialeffect EF_BRANDISH2;
 	mes "After breaking the device, the exterior shatters.";
 	mes "The energy field begins to disappear,";
@@ -1024,6 +1017,11 @@ L_Key:
 		specialeffect2 EF_COMBOATTACK1;
 		close;
 	}
+
+OnTouch:
+	if ((countitem(Key_Red) == 0) && (countitem(Magic_Gem_Red) == 0))
+		specialeffect EF_LEVEL99_4;
+	end;
 }
 
 tha_t04,195,195,0	script	Rune Device#tt2	HIDDEN_NPC,3,3,{
diff --git a/npc/re/instances/BangungotHospital.txt b/npc/re/instances/BangungotHospital.txt
index 1504f892f..f07f43ac7 100644
--- a/npc/re/instances/BangungotHospital.txt
+++ b/npc/re/instances/BangungotHospital.txt
@@ -50,7 +50,7 @@ ma_dun01,147,10,5	script	Nurse#ma_dun01	4_F_NURSE,{
 				else if (malaya_bang == 31)
 					callsub L_Closed,0;
 				else
-					goto L_NoParty;
+					callsub L_NoParty;
 			}
 			if (questprogress(11309,HUNTING) != 2) {
 				.@playtime = questprogress(9224,PLAYTIME);
@@ -102,7 +102,7 @@ ma_dun01,147,10,5	script	Nurse#ma_dun01	4_F_NURSE,{
 						cutin "",255;
 						end;
 					} else {
-						//if (!.@party_id) goto L_NoParty; //unneeded
+						//if (!.@party_id) callsub L_NoParty; //unneeded
 						if (malaya_bang > 39)
 							callsub L_Enter,(getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2))?1:0,1,1;
 						else {
@@ -124,7 +124,7 @@ ma_dun01,147,10,5	script	Nurse#ma_dun01	4_F_NURSE,{
 				end;
 			}
 		} else if (.@quest == 1) {
-			if (!.@party_id) goto L_NoParty;
+			if (!.@party_id) callsub L_NoParty;
 			if (malaya_bang > 39) {
 				if (questprogress(9222,HUNTING) == 1) {
 					.@playtime = questprogress(9224,PLAYTIME);
@@ -134,7 +134,7 @@ ma_dun01,147,10,5	script	Nurse#ma_dun01	4_F_NURSE,{
 						next;
 						callsub L_Enter,0,0;
 					} else if (.@playtime == 2) {
-						//if (!.@party_id) goto L_NoParty; //unneeded
+						//if (!.@party_id) callsub L_NoParty; //unneeded
 						if (malaya_bang > 39)
 							callsub L_Enter,(getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2))?1:0,1,1;
 						else {
@@ -213,7 +213,7 @@ ma_dun01,147,10,5	script	Nurse#ma_dun01	4_F_NURSE,{
 			cutin "",255;
 			end;
 		} else {
-			if (!.@party_id) goto L_NoParty;
+			if (!.@party_id) callsub L_NoParty;
 			if (malaya_bang > 39)
 				callsub L_Enter,(getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2))?1:0,1,1;
 			else {
diff --git a/npc/re/jobs/2e/kagerou_oboro.txt b/npc/re/jobs/2e/kagerou_oboro.txt
index ae28e7b2d..08f8d6024 100644
--- a/npc/re/jobs/2e/kagerou_oboro.txt
+++ b/npc/re/jobs/2e/kagerou_oboro.txt
@@ -786,208 +786,204 @@ job_ko,81,124,4	script	Cougar#ko	4_M_JOB_ASSASSIN,{
 		warp "amatsu",147,136;
 		end;
 	}
-	if (job_kagero != 5) {
-		goto L_Kick;
-	}
-	if (MaxWeight - Weight < 1000 || checkweight("Knife",1) == 0) {
-		mes "[Cougar]";
-		mes "This is a test of knowledge, so why did you bring so many things?";
-		close;
-	}
-	set .@ko_test_01, questprogress(5136);
-	set .@ko_test_01_1, questprogress(5139);
-	if (.@ko_test_01 == 1 && .@ko_test_01_1 == 0) {
-		mes "[Cougar]";
-		mes "It's been a while.";
-		next;
-		select("Aren't you...");
-		mes "[Cougar]";
-		mes "I remember you from before looking for the way of the ninja.";
-		next;
-		mes "[Cougar]";
-		mes "You've grown this strong already?";
-		next;
-		mes "[Cougar]";
-		mes "Ha ha ha-";
-		mes "A truly determined youth! I like that.";
-		next;
-		mes "[Cougar]";
-		mes "Good! The test you are about to take is the ^339CCCTest of Knowledge^000000.";
-		next;
-		mes "[Cougar]";
-		mes "I hope you haven't been lazy with your studies while focusing on getting stronger?";
-		next;
-		switch(select("Yes", "No")) {
-		case 1:
-			setquest 5139;
-			mes "[Cougar]";
-			mes "That's a relief. Let me know when you are ready to start the test.";
-			close;
-		case 2:
-			setquest 5139;
+	if (job_kagero == 5) {
+		if (MaxWeight - Weight < 1000 || checkweight("Knife",1) == 0) {
 			mes "[Cougar]";
-			mes "So you were all talk? Well, let me know when you are ready then.";
+			mes "This is a test of knowledge, so why did you bring so many things?";
 			close;
 		}
-	} else if (.@ko_test_01 == 1 && .@ko_test_01_1 == 1) {
-		mes "[Cougar]";
-		mes "I'm ready at my end. Are you ready for the test?";
-		next;
-		if(select("Yes", "No") == 2) {
+		set .@ko_test_01, questprogress(5136);
+		set .@ko_test_01_1, questprogress(5139);
+		if (.@ko_test_01 == 1 && .@ko_test_01_1 == 0) {
 			mes "[Cougar]";
-			mes "Well, what can I do but wait for you.";
-			close;
-		}
-		mes "[Cougar]";
-		mes "This isn't your first test, is it?";
-		next;
-		mes "[Cougar]";
-		mes "You only need to choose the correct answer to my questions.";
-		next;
-		mes "[Cougar]";
-		mes "Let's start.";
-		next;
-
-		set .@questions,10;  // number of questions to ask
-
-		// shuffle array an array of questions to be asked
-		freeloop(1);
-		setarray .@n[0],
-			1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
-			26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50;
-		for (set .@i,getarraysize(.@n)-1; .@i>0; set .@i,.@i-1) {
-			set .@rand, rand(.@i);
-			set .@tmp, .@n[.@i];
-			set .@n[.@i], .@n[.@rand];
-			set .@n[.@rand], .@tmp;
-		}
-		deletearray .@n[10],getarraysize(.@n) - .@questions;
-		freeloop(0);
-
-		set @job_ko_cougar,0;
-		for (set .@i,1; .@i<=.@questions; set .@i,.@i+1) {
+			mes "It's been a while.";
+			next;
+			select("Aren't you...");
 			mes "[Cougar]";
-			mes (.@i < .@questions)?"Question number "+.@i+":":"Last question:";
-			switch (.@n[.@i-1]) {
-				case 1: callsub L_Question,"What is the DEX + LUK total for a Job Master?",2,"8:10:12:14"; break;
-				case 2: callsub L_Question,"What is the highest job level for a ninja?",1,"70:50:99:100"; break;
-				case 3: callsub L_Question,"How many skill points do you need to master the Throw Coins skill?",3,"25:30:35:37"; break;
-				case 4: callsub L_Question,"Which of the following is the correct number of Evasion and effect duration for Mirror Image level 10?",4,"Up to 7 and 200 seconds:Up to 5 and 220 seconds:Up to 6 and 240 seconds:Up to 5 and 240 seconds"; break;
-				case 5: callsub L_Question,"How many skill points do you need to master the Cicada Skin Shed?",1,"5:3:1:4"; break;
-				case 6: callsub L_Question,"If Dagger Throwing Practice is at 7, how much ATK is added to Shuriken attacks?",2,"18:21:27:30"; break;
-				case 7: callsub L_Question,"What is the basic attack range for Throw Shuriken?",3,"7 blocks:8 blocks:9 blocks:10 blocks"; break;
-				case 8: callsub L_Question,"What is the maximum moving range of Shadow Leap?",4,"6 blocks:7 blocks:8 blocks:9 blocks"; break;
-				case 9: callsub L_Question,"How much money is used for Throw Coins level 6?",4,"2000-8000:1000-6000:3000-8000:3000-6000"; break;
-				case 10: callsub L_Question,"What is the most important aspect of increasing ATK for the Killing Strike skill?",2,"VIT:MAXHP:INT:MAXSP"; break;
-				case 11: callsub L_Question,"What is not the effect you get after reaching the STR status?",3,"Close range attack increase:Weight limit increase:Magic attack increase:Weapon attack increase"; break;
-				case 12: callsub L_Question,"What is not the effect you get after reaching the INT status?",4,"MAXSP increase:MATK increase:Magic damage increase:Staff attack increase"; break;
-				case 13: callsub L_Question,"What is not the effect you get after reaching the DEX status?",2,"Casting time decrease:Evasion increase:Accuracy increase:Long range attack increase"; break;
-				case 14: callsub L_Question,"What is not the effect you get after reaching the AGI status?",1,"Accuracy increase:Flee increase:Attack speed increase:Delay after attack decrease"; break;
-				case 15: callsub L_Question,"What is not the effect you get after reaching the VIT status?",4,"Weapon defense increase:MAXHP increase:Magic defense increase:Attack increase"; break;
-				case 16: callsub L_Question,"What is not the effect you get after reaching the LUK status?",3,"Accuracy increase:Complete evasion increase:Magic damage decrease:Critical rate increase"; break;
-				case 17: callsub L_Question,"You need to equip a card to your shoes to enhance Killing Strike attack. Which of the following is the appropriate card to equip?",2,"Gold Acidus Card:Matyr Card:Odium of Thantos Card:Eddga Card"; break;
-				case 18: callsub L_Question,"You need a catalyst to use ninja skills. Which of the following skills does not need a catalyst?",3,"Blaze Shield:Watery Evasion:Flaming Petals:Snow Flake Draft"; break;
-				case 19: callsub L_Question,"How much does STR/INT go up when Ninja Aura level 5 is used?",2,"4:5:6:7"; break;
-				case 20: callsub L_Question,"You are hunting the Orc Warrior. Which Kunai would you use? ",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
-				case 21: callsub L_Question,"Which village is the Ninja Guild located in?",2,"Lutie:Amatsu:Dewata:Comodo"; break;
-				case 22: callsub L_Question,"How do Ninjas get promoted?",3,"By Val Kiwi:By Randgris:None:By Valkyrie"; break;
-				case 23: callsub L_Question,"What was next to me when you first met me?",4,"A cushion:A folding screen:A flowerpot:A brazier"; break;
-				case 24: callsub L_Question,"What is the level of Dagger Throwing Practice you have to reach to learn the Killing Strike skill?",1,"7:5:6:8"; break;
-				case 25: callsub L_Question,"How many hits does a Throw Kunai give to a monster?",2,"2:3:4:5"; break;
-				case 26: callsub L_Question,"When your First Wind is at level 4, what will go with the MATK and range?",3,"MATK400, 8 blocks:MATK500, 7 blocks:MATK500, 8 blocks:MATK400, 7 blocks"; break;
-				case 27: callsub L_Question,"Which of the following skills can't you learn at Dagger Throwing Practice level 7?",4,"Throw Kunai:Throw Huuma Shuriken:Killing Strike:Throw Coins"; break;
-				case 28: callsub L_Question,"What level do you have to be in Dagger Throwing Practice in order to learn the Throw Coins skill?",4,"4:6:8:10"; break;
-				case 29: callsub L_Question,"What is the attack range for the Exploding Dragon?",3,"3*3:4*4:5*5:6*6"; break;
-				case 30: callsub L_Question,"How long is the effect time for the Watery Evasion level 7 skill?",2,"40 seconds:45 seconds:50 seconds:55 seconds"; break;
-				case 31: callsub L_Question,"What is the attack effect for Haze Slasher level 4?",1,"140%:150%:160%:170%"; break;
-				case 32: callsub L_Question,"How much power is in the Huuma Blaze Shuriken weapon?",1,"Fireball 5 , DEX-2:Fireball 5 , DEX-3:Fireball 4 , DEX-2:Fireball 4 , DEX-3"; break;
-				case 33: callsub L_Question,"How much power is in the Murasame weapon?",2,"Human attack 10%:Human critical +10:Demon attack 10%:Demon critical +10"; break;
-				case 34: callsub L_Question,"What is the maximum hit number for Blaze Shield level 10?",3,"7:8:9:10"; break;
-				case 35: callsub L_Question,"What is the property of the Lightning Jolt?",4,"Fire:Water:Ground:Wind"; break;
-				case 36: callsub L_Question,"You are creating a weapon for small monsters. What is the best card to use?",4,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
-				case 37: callsub L_Question,"You are creating a weapon for mid-sized monsters. What is the best card to use?",3,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
-				case 38: callsub L_Question,"You are creating a weapon for huge monsters. What is the best card to use?",2,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
-				case 39: callsub L_Question,"Which NPC promotes you?",1,"Valkyrie:Val Kiwi:Balp Hiri:Elephant"; break;
-				case 40: callsub L_Question,"Which catalyst do you need to use the Blaze Shield skill?",2,"Ice Stone:Flame Stone:Wind Stone:Earth Stone"; break;
-				case 41: callsub L_Question,"Which of the following is not an effect of the Watery Evasion skill?",4,"Movement speed decrease:Waterball availability:Holy Water craftability:VIT decrease"; break;
-				case 42: callsub L_Question,"Which of the following matches are incorrect for skill and property?",3,"Flaming Petals-Fire:Snow Flake Draft-Water:Freezing Spear-Ground:Lightning Jolt-Wind"; break;
-				case 43: callsub L_Question,"Which of the following is the best skill to use when attacking a ground property enemy?",2,"First Wind:Exploding Dragon:Snow Flake Draft:Wind Blade"; break;
-				case 44: callsub L_Question,"Which Ninja Mastery skill level do you need to learn the Exploding Dragon skill?",1,"10:9:8:1"; break;
-				case 45: callsub L_Question,"What is the attack range when you master Flip Tatami?",3,"5:7:3:1"; break;
-				case 46: callsub L_Question,"What weapon cannot be made by the blacksmith Khaibara?",4,"Khukri:Murasame:Hakujin:Humma Wing Shuriken"; break;
-				case 47: callsub L_Question,"Which of the following correctly matches material needed to make a Icicle Kunai?",2,"4 Nimbus Shuriken, 2 Ice Stone:8 Nimbus Shuriken, 2 Ice Stone:2 Nimbus Shuriken, 1 Ice Stone:1 Nimbus Shuriken, 2 Ice Stone"; break;
-				case 48: callsub L_Question,"Which of the following Kunai will give the most damage to the ground property monster, Porcellio?",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
-				case 49: callsub L_Question,"Which of the following blacksmiths do not create ninja items?",2,"Khaibara:Aiku:Tetsu:Toshu"; break;
-				case 50: callsub L_Question,"What is the name of the suspicious man you can meet during the Ninja job change quest?",3,"Red Leopard Jack:Black Leopard Jack:Red Leopard Joe:Black Leopard Joe"; break;
-				default:
-					mes "[Cougar]";
-					mes "An unknown error has occurred.";
-					mes "Please contact customer service.";
-					close;
-			}
-		}
-		mes "[Cougar]";
-		mes "You're through all 10 questions. Wasn't so bad! The important part starts now.";
-		next;
-		mes "[Cougar]";
-		mes "... ... ...";
-		next;
-		if (@job_ko_cougar < 90) {
+			mes "I remember you from before looking for the way of the ninja.";
+			next;
 			mes "[Cougar]";
-			mes "You fool!!";
-			mes "You couldn't even solve these?";
+			mes "You've grown this strong already?";
 			next;
 			mes "[Cougar]";
-			mes "Can't believe someone who is taking a new path can be so pathetic.";
+			mes "Ha ha ha-";
+			mes "A truly determined youth! I like that.";
 			next;
 			mes "[Cougar]";
-			mes "I'll give you another chance.";
-			mes "You will take the test again with new questions. Better pass it this time.";
-		} else {
+			mes "Good! The test you are about to take is the ^339CCCTest of Knowledge^000000.";
+			next;
 			mes "[Cougar]";
-			mes "Hmm. " + (@job_ko_cougar) + "?";
+			mes "I hope you haven't been lazy with your studies while focusing on getting stronger?";
 			next;
+			switch(select("Yes", "No")) {
+			case 1:
+				setquest 5139;
+				mes "[Cougar]";
+				mes "That's a relief. Let me know when you are ready to start the test.";
+				close;
+			case 2:
+				setquest 5139;
+				mes "[Cougar]";
+				mes "So you were all talk? Well, let me know when you are ready then.";
+				close;
+			}
+		} else if (.@ko_test_01 == 1 && .@ko_test_01_1 == 1) {
 			mes "[Cougar]";
-			mes "Well, looks like you weren't lazy with your studies.";
+			mes "I'm ready at my end. Are you ready for the test?";
 			next;
+			if(select("Yes", "No") == 2) {
+				mes "[Cougar]";
+				mes "Well, what can I do but wait for you.";
+				close;
+			}
 			mes "[Cougar]";
-			mes "What? Proud of yourself for solving these questions?";
+			mes "This isn't your first test, is it?";
 			next;
 			mes "[Cougar]";
-			mes "You still have a long way to go and this is only a small fraction of it.";
+			mes "You only need to choose the correct answer to my questions.";
 			next;
 			mes "[Cougar]";
-			mes "Well... I'm curious how far your strong will can take you through other tests.";
+			mes "Let's start.";
 			next;
-			completequest 5136;
-			erasequest 5139;
+
+			set .@questions,10;  // number of questions to ask
+
+			// shuffle array an array of questions to be asked
+			freeloop(1);
+			setarray .@n[0],
+				1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
+				26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50;
+			for (set .@i,getarraysize(.@n)-1; .@i>0; set .@i,.@i-1) {
+				set .@rand, rand(.@i);
+				set .@tmp, .@n[.@i];
+				set .@n[.@i], .@n[.@rand];
+				set .@n[.@rand], .@tmp;
+			}
+			deletearray .@n[10],getarraysize(.@n) - .@questions;
+			freeloop(0);
+
+			set @job_ko_cougar,0;
+			for (set .@i,1; .@i<=.@questions; set .@i,.@i+1) {
+				mes "[Cougar]";
+				mes (.@i < .@questions)?"Question number "+.@i+":":"Last question:";
+				switch (.@n[.@i-1]) {
+					case 1: callsub L_Question,"What is the DEX + LUK total for a Job Master?",2,"8:10:12:14"; break;
+					case 2: callsub L_Question,"What is the highest job level for a ninja?",1,"70:50:99:100"; break;
+					case 3: callsub L_Question,"How many skill points do you need to master the Throw Coins skill?",3,"25:30:35:37"; break;
+					case 4: callsub L_Question,"Which of the following is the correct number of Evasion and effect duration for Mirror Image level 10?",4,"Up to 7 and 200 seconds:Up to 5 and 220 seconds:Up to 6 and 240 seconds:Up to 5 and 240 seconds"; break;
+					case 5: callsub L_Question,"How many skill points do you need to master the Cicada Skin Shed?",1,"5:3:1:4"; break;
+					case 6: callsub L_Question,"If Dagger Throwing Practice is at 7, how much ATK is added to Shuriken attacks?",2,"18:21:27:30"; break;
+					case 7: callsub L_Question,"What is the basic attack range for Throw Shuriken?",3,"7 blocks:8 blocks:9 blocks:10 blocks"; break;
+					case 8: callsub L_Question,"What is the maximum moving range of Shadow Leap?",4,"6 blocks:7 blocks:8 blocks:9 blocks"; break;
+					case 9: callsub L_Question,"How much money is used for Throw Coins level 6?",4,"2000-8000:1000-6000:3000-8000:3000-6000"; break;
+					case 10: callsub L_Question,"What is the most important aspect of increasing ATK for the Killing Strike skill?",2,"VIT:MAXHP:INT:MAXSP"; break;
+					case 11: callsub L_Question,"What is not the effect you get after reaching the STR status?",3,"Close range attack increase:Weight limit increase:Magic attack increase:Weapon attack increase"; break;
+					case 12: callsub L_Question,"What is not the effect you get after reaching the INT status?",4,"MAXSP increase:MATK increase:Magic damage increase:Staff attack increase"; break;
+					case 13: callsub L_Question,"What is not the effect you get after reaching the DEX status?",2,"Casting time decrease:Evasion increase:Accuracy increase:Long range attack increase"; break;
+					case 14: callsub L_Question,"What is not the effect you get after reaching the AGI status?",1,"Accuracy increase:Flee increase:Attack speed increase:Delay after attack decrease"; break;
+					case 15: callsub L_Question,"What is not the effect you get after reaching the VIT status?",4,"Weapon defense increase:MAXHP increase:Magic defense increase:Attack increase"; break;
+					case 16: callsub L_Question,"What is not the effect you get after reaching the LUK status?",3,"Accuracy increase:Complete evasion increase:Magic damage decrease:Critical rate increase"; break;
+					case 17: callsub L_Question,"You need to equip a card to your shoes to enhance Killing Strike attack. Which of the following is the appropriate card to equip?",2,"Gold Acidus Card:Matyr Card:Odium of Thantos Card:Eddga Card"; break;
+					case 18: callsub L_Question,"You need a catalyst to use ninja skills. Which of the following skills does not need a catalyst?",3,"Blaze Shield:Watery Evasion:Flaming Petals:Snow Flake Draft"; break;
+					case 19: callsub L_Question,"How much does STR/INT go up when Ninja Aura level 5 is used?",2,"4:5:6:7"; break;
+					case 20: callsub L_Question,"You are hunting the Orc Warrior. Which Kunai would you use? ",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
+					case 21: callsub L_Question,"Which village is the Ninja Guild located in?",2,"Lutie:Amatsu:Dewata:Comodo"; break;
+					case 22: callsub L_Question,"How do Ninjas get promoted?",3,"By Val Kiwi:By Randgris:None:By Valkyrie"; break;
+					case 23: callsub L_Question,"What was next to me when you first met me?",4,"A cushion:A folding screen:A flowerpot:A brazier"; break;
+					case 24: callsub L_Question,"What is the level of Dagger Throwing Practice you have to reach to learn the Killing Strike skill?",1,"7:5:6:8"; break;
+					case 25: callsub L_Question,"How many hits does a Throw Kunai give to a monster?",2,"2:3:4:5"; break;
+					case 26: callsub L_Question,"When your First Wind is at level 4, what will go with the MATK and range?",3,"MATK400, 8 blocks:MATK500, 7 blocks:MATK500, 8 blocks:MATK400, 7 blocks"; break;
+					case 27: callsub L_Question,"Which of the following skills can't you learn at Dagger Throwing Practice level 7?",4,"Throw Kunai:Throw Huuma Shuriken:Killing Strike:Throw Coins"; break;
+					case 28: callsub L_Question,"What level do you have to be in Dagger Throwing Practice in order to learn the Throw Coins skill?",4,"4:6:8:10"; break;
+					case 29: callsub L_Question,"What is the attack range for the Exploding Dragon?",3,"3*3:4*4:5*5:6*6"; break;
+					case 30: callsub L_Question,"How long is the effect time for the Watery Evasion level 7 skill?",2,"40 seconds:45 seconds:50 seconds:55 seconds"; break;
+					case 31: callsub L_Question,"What is the attack effect for Haze Slasher level 4?",1,"140%:150%:160%:170%"; break;
+					case 32: callsub L_Question,"How much power is in the Huuma Blaze Shuriken weapon?",1,"Fireball 5 , DEX-2:Fireball 5 , DEX-3:Fireball 4 , DEX-2:Fireball 4 , DEX-3"; break;
+					case 33: callsub L_Question,"How much power is in the Murasame weapon?",2,"Human attack 10%:Human critical +10:Demon attack 10%:Demon critical +10"; break;
+					case 34: callsub L_Question,"What is the maximum hit number for Blaze Shield level 10?",3,"7:8:9:10"; break;
+					case 35: callsub L_Question,"What is the property of the Lightning Jolt?",4,"Fire:Water:Ground:Wind"; break;
+					case 36: callsub L_Question,"You are creating a weapon for small monsters. What is the best card to use?",4,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+					case 37: callsub L_Question,"You are creating a weapon for mid-sized monsters. What is the best card to use?",3,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+					case 38: callsub L_Question,"You are creating a weapon for huge monsters. What is the best card to use?",2,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+					case 39: callsub L_Question,"Which NPC promotes you?",1,"Valkyrie:Val Kiwi:Balp Hiri:Elephant"; break;
+					case 40: callsub L_Question,"Which catalyst do you need to use the Blaze Shield skill?",2,"Ice Stone:Flame Stone:Wind Stone:Earth Stone"; break;
+					case 41: callsub L_Question,"Which of the following is not an effect of the Watery Evasion skill?",4,"Movement speed decrease:Waterball availability:Holy Water craftability:VIT decrease"; break;
+					case 42: callsub L_Question,"Which of the following matches are incorrect for skill and property?",3,"Flaming Petals-Fire:Snow Flake Draft-Water:Freezing Spear-Ground:Lightning Jolt-Wind"; break;
+					case 43: callsub L_Question,"Which of the following is the best skill to use when attacking a ground property enemy?",2,"First Wind:Exploding Dragon:Snow Flake Draft:Wind Blade"; break;
+					case 44: callsub L_Question,"Which Ninja Mastery skill level do you need to learn the Exploding Dragon skill?",1,"10:9:8:1"; break;
+					case 45: callsub L_Question,"What is the attack range when you master Flip Tatami?",3,"5:7:3:1"; break;
+					case 46: callsub L_Question,"What weapon cannot be made by the blacksmith Khaibara?",4,"Khukri:Murasame:Hakujin:Humma Wing Shuriken"; break;
+					case 47: callsub L_Question,"Which of the following correctly matches material needed to make a Icicle Kunai?",2,"4 Nimbus Shuriken, 2 Ice Stone:8 Nimbus Shuriken, 2 Ice Stone:2 Nimbus Shuriken, 1 Ice Stone:1 Nimbus Shuriken, 2 Ice Stone"; break;
+					case 48: callsub L_Question,"Which of the following Kunai will give the most damage to the ground property monster, Porcellio?",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
+					case 49: callsub L_Question,"Which of the following blacksmiths do not create ninja items?",2,"Khaibara:Aiku:Tetsu:Toshu"; break;
+					case 50: callsub L_Question,"What is the name of the suspicious man you can meet during the Ninja job change quest?",3,"Red Leopard Jack:Black Leopard Jack:Red Leopard Joe:Black Leopard Joe"; break;
+					default:
+						mes "[Cougar]";
+						mes "An unknown error has occurred.";
+						mes "Please contact customer service.";
+						close;
+				}
+			}
+			mes "[Cougar]";
+			mes "You're through all 10 questions. Wasn't so bad! The important part starts now.";
+			next;
+			mes "[Cougar]";
+			mes "... ... ...";
+			next;
+			if (@job_ko_cougar < 90) {
+				mes "[Cougar]";
+				mes "You fool!!";
+				mes "You couldn't even solve these?";
+				next;
+				mes "[Cougar]";
+				mes "Can't believe someone who is taking a new path can be so pathetic.";
+				next;
+				mes "[Cougar]";
+				mes "I'll give you another chance.";
+				mes "You will take the test again with new questions. Better pass it this time.";
+			} else {
+				mes "[Cougar]";
+				mes "Hmm. " + (@job_ko_cougar) + "?";
+				next;
+				mes "[Cougar]";
+				mes "Well, looks like you weren't lazy with your studies.";
+				next;
+				mes "[Cougar]";
+				mes "What? Proud of yourself for solving these questions?";
+				next;
+				mes "[Cougar]";
+				mes "You still have a long way to go and this is only a small fraction of it.";
+				next;
+				mes "[Cougar]";
+				mes "Well... I'm curious how far your strong will can take you through other tests.";
+				next;
+				completequest 5136;
+				erasequest 5139;
+				mes "[Cougar]";
+				mes "I'll let you go now so go report back to Guide Gion with your results.";
+				close2;
+				warp "job_ko",16,113;
+				end;
+			}
+			set @job_ko_cougar,0;
+			close;
+		} else if (.@ko_test_01 == 2 && .@ko_test_01_1 == 0) {
 			mes "[Cougar]";
 			mes "I'll let you go now so go report back to Guide Gion with your results.";
 			close2;
 			warp "job_ko",16,113;
 			end;
 		}
-		set @job_ko_cougar,0;
-		close;
-	} else if (.@ko_test_01 == 2 && .@ko_test_01_1 == 0) {
-		mes "[Cougar]";
-		mes "I'll let you go now so go report back to Guide Gion with your results.";
-		close2;
-		warp "job_ko",16,113;
-		end;
-	} else {
-	L_Kick:
-		mes "[Cougar]";
-		mes "How did you get here?";
-		next;
-		mes "[Cougar]";
-		mes "It's my duty to get rid of you.";
-		mes "^000099(He's a short, silent man.)^000000";
-		mes "This will push you back!";
-		close2;
-		warp "amatsu",147,136;
-		end;
 	}
+	mes "[Cougar]";
+	mes "How did you get here?";
+	next;
+	mes "[Cougar]";
+	mes "It's my duty to get rid of you.";
+	mes "^000099(He's a short, silent man.)^000000";
+	mes "This will push you back!";
+	close2;
+	warp "amatsu",147,136;
 	end;
 
 //callsub L_Question,"<Question>",<correct answer choice>,"<Choice 1>:<Choice 2>:<Choice 3>:<Choice 4>";
diff --git a/npc/re/jobs/3-1/guillotine_cross.txt b/npc/re/jobs/3-1/guillotine_cross.txt
index d56aff87d..f70ee321c 100644
--- a/npc/re/jobs/3-1/guillotine_cross.txt
+++ b/npc/re/jobs/3-1/guillotine_cross.txt
@@ -35,103 +35,110 @@
 //=========================================================================
 
 que_job01,75,96,3	script	Guild Member#3rdgc01	4_M_MOCASS1,{
-	if (job_3rd_gc == 0) {
-		if (Class == Job_Assassin || Class == Job_Assassin_Cross || Class == Job_Baby_Assassin) {
-			if (BaseLevel >= 99) {
-			L_Mission:
-				mes "[Ahcart]";
-				mes "Finally, it's time...";
-				mes "Hey, what's your name?";
-				next;
-				switch(select(strcharinfo(PC_NAME),".....")) {
-				case 1:
+	if (job_3rd_gc == 0 || job_3rd_gc == 1) {
+		if (job_3rd_gc == 0) {
+			if (Class == Job_Assassin || Class == Job_Assassin_Cross || Class == Job_Baby_Assassin) {
+				if (BaseLevel < 99) {
 					mes "[Ahcart]";
-					mes strcharinfo(PC_NAME)+"?";
-					mes "Got it. I'll remember your name.";
-					mes "A master told me that you are a person with ability.";
-					break;
-				case 2:
-					mes "[Ahcart]";
-					mes "What? You are a distrustful person.";
-					mes "Hmm, whatever.";
-					mes "I heard that you are a person with ability.";
-					break;
-				}
-				next;
-				mes "[Ahcart]";
-				mes "My duty is delivering a guild message to a capable assassin.";
-				mes "I think that you are suitable to perform the guild's duty.";
-				next;
-				mes "[Ahcart]";
-				mes "So, would you perform this duty for us?";
-				mes "Of course, I'm going to offer a reward for completing your task.";
-				next;
-				select("What is the request?");
-				mes "[Ahcart]";
-				mes "It's unclear.";
-				mes "I told you. It's a special task.";
-				mes "The only thing I know is the condition to bring a person with the master's ability.";
-				next;
-				mes "[Ahcart]";
-				mes "First, one who has patience.";
-				mes "Second, one who is quiet.";
-				mes "Third, one who is focused.";
-				next;
-				mes "[Ahcart]";
-				mes "What do you think about what I told you?";
-				mes "This task means that it needs a person who can perform a task irrespective of their own will.";
-				next;
-				mes "[Ahcart]";
-				mes "It's necessary to keep this request secret.";
-				mes "But it's also your duty not to tell anyone.";
-				next;
-				mes "[Ahcart]";
-				mes "This is all your choice.";
-				mes "Will you help us with this request?";
-				next;
-				switch(select("I'll do it.", "Give me time to think.")) {
-				case 1:
-					mes "[Ahcart]";
-					mes "Ok, to Veins.";
-					mes "I'll contact them.";
-					mes "It's your first duty to go to Veins.";
+					mes "Hmm, you are my peer.";
+					mes "I'm Ahcart. I'm from Veins.";
+					mes "Hmm...";
 					next;
 					mes "[Ahcart]";
-					mes "You should be able to find it easily.";
-					mes "Go now.";
-					job_3rd_gc = 3;
-					setquest 7101;
-					close;
-				case 2:
-					mes "[Ahcart]";
-					mes "Got it.";
-					mes "But don't think about it for too long.";
-					job_3rd_gc = 2;
+					mes "Of course, a chapter of the assassin guild is not only in Morroc. If you have a chance to go there, visit there.";
+					mes "I think you might go there.";
+					job_3rd_gc = 1;
 					close;
 				}
+			} else {
+				mes "[A man of a sharp impression]";
+				mes "....";
+				mes "What the...?";
+				mes "You are not an assassin.";
+				close;
 			}
+		} else if (job_3rd_gc == 1) {
+			if (BaseLevel < 99) {
+				mes "[Ahcart]";
+				mes "If you become stronger and more skillful, then the assassin's guild will give you a special task.";
+				mes "Go for it.";
+				close;
+			}
+		}
+		mes "[Ahcart]";
+		mes "Finally, it's time...";
+		mes "Hey, what's your name?";
+		next;
+		switch(select(strcharinfo(PC_NAME),".....")) {
+		case 1:
 			mes "[Ahcart]";
-			mes "Hmm, you are my peer.";
-			mes "I'm Ahcart. I'm from Veins.";
-			mes "Hmm...";
+			mes strcharinfo(PC_NAME)+"?";
+			mes "Got it. I'll remember your name.";
+			mes "A master told me that you are a person with ability.";
+			break;
+		case 2:
+			mes "[Ahcart]";
+			mes "What? You are a distrustful person.";
+			mes "Hmm, whatever.";
+			mes "I heard that you are a person with ability.";
+			break;
+		}
+		next;
+		mes "[Ahcart]";
+		mes "My duty is delivering a guild message to a capable assassin.";
+		mes "I think that you are suitable to perform the guild's duty.";
+		next;
+		mes "[Ahcart]";
+		mes "So, would you perform this duty for us?";
+		mes "Of course, I'm going to offer a reward for completing your task.";
+		next;
+		select("What is the request?");
+		mes "[Ahcart]";
+		mes "It's unclear.";
+		mes "I told you. It's a special task.";
+		mes "The only thing I know is the condition to bring a person with the master's ability.";
+		next;
+		mes "[Ahcart]";
+		mes "First, one who has patience.";
+		mes "Second, one who is quiet.";
+		mes "Third, one who is focused.";
+		next;
+		mes "[Ahcart]";
+		mes "What do you think about what I told you?";
+		mes "This task means that it needs a person who can perform a task irrespective of their own will.";
+		next;
+		mes "[Ahcart]";
+		mes "It's necessary to keep this request secret.";
+		mes "But it's also your duty not to tell anyone.";
+		next;
+		mes "[Ahcart]";
+		mes "This is all your choice.";
+		mes "Will you help us with this request?";
+		next;
+		switch(select("I'll do it.", "Give me time to think.")) {
+		case 1:
+			mes "[Ahcart]";
+			mes "Ok, to Veins.";
+			mes "I'll contact them.";
+			mes "It's your first duty to go to Veins.";
 			next;
 			mes "[Ahcart]";
-			mes "Of course, a chapter of the assassin guild is not only in Morroc. If you have a chance to go there, visit there.";
-			mes "I think you might go there.";
-			job_3rd_gc = 1;
+			mes "You should be able to find it easily.";
+			mes "Go now.";
+			job_3rd_gc = 3;
+			setquest 7101;
+			close;
+		case 2:
+			mes "[Ahcart]";
+			mes "Got it.";
+			mes "But don't think about it for too long.";
+			job_3rd_gc = 2;
 			close;
 		}
-		mes "[A man of a sharp impression]";
-		mes "....";
-		mes "What the...?";
-		mes "You are not an assassin.";
-		close;
-	} else if (job_3rd_gc == 1) {
-		if (BaseLevel >= 99) goto L_Mission;
-		mes "[Ahcart]";
-		mes "If you become stronger and more skillful, then the assassin's guild will give you a special task.";
-		mes "Go for it.";
-		close;
+		
+		
+		
+
 	} else if (job_3rd_gc == 2) {
 		mes "[Ahcart]";
 		mes "Have you thought about it more?";
@@ -3649,85 +3656,87 @@ job3_guil01,148,53,3	script	Bercasell#3rdgc16	4_M_GUILLOTINE,{
 						next;
 						switch(select("Yes, change my job.", "I need to think about it.")) {
 						case 1:
-							L_JobChange:
-							mes "[Bercasell]";
-							mes "You don't regret it?";
-							callsub L_Info;
-							mes "[Bercasell]";
-							mes "You can become a living offensive weapon.";
-							mes "Do you really want to become a Guillotine Cross?";
-							next;
-							switch(select("Yes, change my job.", "I need to rethink it.")) {
-							case 1:
-								mes "[Bercasell]";
-								if (hascashmount()) {
-									mes "I cannot perform the job change.";
-									mes "Please remove your mount and try again.";
-									close;
-								} else if (SkillPoint != 0) {
-									mes "You still have unspent skill points.";
-									mes "Please use all your skill points and try again.";
-									close;
-								}
-								mes "Is your decision final?";
-								mes "Good.";
-								next;
-								mes "[Bercasell]";
-								mes "Now, you are an assassin, yet you are not an assassin anymore.";
-								mes "You are in the shadows, but it's different from the other shadows.";
-								next;
-								mes "[Bercasell]";
-								mes "Your enemy is everything you can see.";
-								mes "Don't forget yourself.";
-								mes "A weight of the blood on your weapons.";
-								next;
-								mes "[Bercasell]";
-								mes "Ok, change your clothes to your new uniform.";
-								mes "You are now a Guillotine Cross.";
-								next;
-								mes "[Bercasell]";
-								mes "A sword of the shadow...";
-								setlook 7,0;
-								jobchange roclass(eaclass()|EAJL_THIRD);
-								if (questprogress(7096) == 1) {
-									job_3rd_gc = 25;
-									erasequest 7096;
-								} else if (questprogress(7097) == 1) {
-									job_3rd_gc = 26;
-									erasequest 7097;
-								} else if (questprogress(7098) == 1) {
-									job_3rd_gc = 27;
-									erasequest 7098;
-								} else if (questprogress(7099) == 1) {
-									job_3rd_gc = 28;
-									erasequest 7099;
-								}
-								getitem Green_Apple_Ring,1;
-								getitem Silent_Executer,1;
-								next;
-								mes "[Bercasell]";
-								mes "And... these are presents to celebrate your becoming a Guillotine Cross.";
-								close;
-							case 2:
-								mes "[Bercasell]";
-								mes "You are prudent. That's a good thing.";
-								mes "I'll wait for the day that you decide to join us as a Guillotine Cross.";
-								close;
-							}
+							break;
 						case 2:
 							mes "[Bercasell]";
 							mes "You are prudent. That's a good thing.";
 							mes "I'll wait for the day that you decide to join us as a Guillotine Cross.";
 							close;
 						}
+						break;
 					}
+					break;
 				case 2:
-					goto L_JobChange;
+					break;
 				case 3:
 					mes "[Bercasell]";
 					mes "Don't bother me.";
 					close;
 				}
+				mes "[Bercasell]";
+				mes "You don't regret it?";
+				callsub L_Info;
+				mes "[Bercasell]";
+				mes "You can become a living offensive weapon.";
+				mes "Do you really want to become a Guillotine Cross?";
+				next;
+				switch(select("Yes, change my job.", "I need to rethink it.")) {
+				case 1:
+					mes "[Bercasell]";
+					if (hascashmount()) {
+						mes "I cannot perform the job change.";
+						mes "Please remove your mount and try again.";
+						close;
+					} else if (SkillPoint != 0) {
+						mes "You still have unspent skill points.";
+						mes "Please use all your skill points and try again.";
+						close;
+					}
+					mes "Is your decision final?";
+					mes "Good.";
+					next;
+					mes "[Bercasell]";
+					mes "Now, you are an assassin, yet you are not an assassin anymore.";
+					mes "You are in the shadows, but it's different from the other shadows.";
+					next;
+					mes "[Bercasell]";
+					mes "Your enemy is everything you can see.";
+					mes "Don't forget yourself.";
+					mes "A weight of the blood on your weapons.";
+					next;
+					mes "[Bercasell]";
+					mes "Ok, change your clothes to your new uniform.";
+					mes "You are now a Guillotine Cross.";
+					next;
+					mes "[Bercasell]";
+					mes "A sword of the shadow...";
+					setlook 7,0;
+					jobchange roclass(eaclass()|EAJL_THIRD);
+					if (questprogress(7096) == 1) {
+						job_3rd_gc = 25;
+						erasequest 7096;
+					} else if (questprogress(7097) == 1) {
+						job_3rd_gc = 26;
+						erasequest 7097;
+					} else if (questprogress(7098) == 1) {
+						job_3rd_gc = 27;
+						erasequest 7098;
+					} else if (questprogress(7099) == 1) {
+						job_3rd_gc = 28;
+						erasequest 7099;
+					}
+					getitem Green_Apple_Ring,1;
+					getitem Silent_Executer,1;
+					next;
+					mes "[Bercasell]";
+					mes "And... these are presents to celebrate your becoming a Guillotine Cross.";
+					close;
+				case 2:
+					mes "[Bercasell]";
+					mes "You are prudent. That's a good thing.";
+					mes "I'll wait for the day that you decide to join us as a Guillotine Cross.";
+					close;
+				}
 			}
 			mes "......";
 			mes "What can I do for you?";
diff --git a/npc/re/quests/eden/eden_tutorial.txt b/npc/re/quests/eden/eden_tutorial.txt
index e9fac253b..45d7c6f1e 100644
--- a/npc/re/quests/eden/eden_tutorial.txt
+++ b/npc/re/quests/eden/eden_tutorial.txt
@@ -35,8 +35,129 @@
 moc_para01,34,178,3	script	Tutorial Instructor	4_M_KHMAN,{
 	if (Class == Job_Novice) {
 		// Fall through
-	} else if (!questprogress(9167)) {
-	OnStartQuest:
+	} else if (!questprogress(9167) || questprogress(9173) == 1) {
+		if (questprogress(9173) == 1) {
+			mes "[Tutorial Instructor]";
+			mes "Do you have any questions?";
+			next;
+			switch(select("Can I do the same quest again?", "About the Quest Window...", "About ENCHANT...", "About Searching Vends...", "About Mercenary and Pets...", "End Conversation.")) {
+			case 1:
+				if (questprogress(9173,PLAYTIME) == 1) {
+					mes "[Tutorial Instructor]";
+					mes "The one method to do the same quests repeatdedly is to do the ^006400Daily Quests^000000.";
+					next;
+					mes "[Tutorial Instructor]";
+					mes "Once you complete a ^006400Daily Quest^000000 and turn it in, wait about a day then come back to get the request and do it all over again!";
+					mes "[Tutorial Instructor]";
+					mes "If you received a daily quest, look at bottom right of the ^006400Quest Window^000000. There is a section that is called ^006400LIMITED^000000. In that section, it'll tell you how much time needs to pass before you can pick up another daily quest.";
+					next;
+					mes "[Tutorial Instructor]";
+					mes "It seems you still have some time left to wait out after finishing my quest. Wait it out a bit more, then come find me and you can get the same quest again.";
+					close;
+				}
+				mes "[Tutorial Instructor]";
+				mes "It seems that about a day has passed since you've finished my quest. Alright, so like the ^006400Daily Quests^000000, you can get a quest from me. Did you want to proceed?";
+				next;
+				switch(select("Yes", "No")) {
+				case 1:
+					@tutorial_restart = 1;
+					break;
+				case 2:
+					mes "[Tutorial Instructor]";
+					mes "Okay. But if you change your mind and want to receive a quest, come find me.";
+					close;
+				}
+				break;
+			case 2:
+				mes "[Tutorial Instructor]";
+				mes "They say that the ^006400Quest Window^000000 details out everything you need to know about your quests.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "If you look at the top left";
+				mes "in the area with the information,";
+				mes "it says ^006400QUEST^000000";
+				mes "and if you click that";
+				mes "it'll show all information";
+				mes "that pertains to the request.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "Using the ^006400Quest Window^000000 will make your life easier. It'll tell you where to go, what items to get or who to find and etc.";
+				close;
+			case 3:
+				mes "[Tutorial Instructor]";
+				mes "006400ENCHANT^000000, in general, is divided into two parts: ^006400SOCKET ENCHANT^000000 and ^006400HIDDEN SOCKET ENCHANT^000000.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "^006400SOCKET ENCHANT^000000 is used to add a SOCKET into equipments and ^006400HIDDEN SOCKET ENCHANT^000000 is used to put in stats into a socket of an armor.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "Of course, in order to do this we are in need of some materials and there is a chance that it may fail, but that's the risk you're taking.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "The people who do the ^006400SOCKET ENCHANT^000000 can be found in ^8B4513Prontera, Morroc, Payon,^000000. ^8B4513Rhitalzen^000000 is in the Refinery and ^0000FFSeiyablem^000000 and ^0000FFReiablem^000000 can be found near the entrance.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "The one who does ^006400HIDDEN SOCKET ENCHANT^000000 is found at the 6 o'clock location of ^8B4513Prontera^000000. Look for the ^0000FFCraftman Apprentice^000000.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "Do you think you understand a little bit more about ^006400ENCHANT^000000?";
+				close;
+			case 4:
+				mes "[Tutorial Instructor]";
+				mes "^006400Vend Search^000000 can be utilized by the ^006400Universal Silver Catalog^000000 item. Since you search through as vends on that map, it'll make it easier for you to find the item that you're looking for.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "The ^006400Universal Silver Catalog^000000";
+				mes "can be obtained from ";
+				mes "the ^0000FFCatalogue Wizard^000000";
+				mes "that is located in South Prontera;";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "It only costs 200 zeny for one";
+				mes "of these and with it you can";
+				mes "search up to 10 times.";
+				mes "You can say that it's a necessity.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "So, are you getting familiar with ^006400Vend Search^000000? Don't just stand there and listen to me. Go ahead and try it for yourself!";
+				close;
+			case 5:
+				mes "[Tutorial Instructor]";
+				mes "Depending on what you need, ^006400Mercenary^000000 and ^006400Pet^000000 can be used in various ways.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "If a 006400Mercenary^000000 gives you direct effect";
+				mes "by fighting for you";
+				mes "then a ^006400Pet^000000 helps you indirectly with their";
+				mes "abilities and varied appearances,";
+				mes "and it captures your heart.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "In order to employ a Mercenary";
+				mes "Go find the ^006400Mercenary Guild^000000";
+				mes "which is by the front door of ^8B4513Prontera^000000.";
+				mes "Go to the ^006400Information Agent^000000";
+				mes "and ask them where the ^006400Mercenary Guild Official^000000";
+				mes "is located and they will let you know.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "In order to get a ^006400Pet^000000, while hunting you will obtain taming items. Use the tame on the monster it's for and you can get a pet.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "Because there is a chance for failure, please use the taming item with great care.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "That aside... you can get a ^006400Mercenary^000000 from the Mercenary Guild and you can get a ^006400Pet^000000 by trading or buying it from another player.";
+				next;
+				mes "[Tutorial Instructor]";
+				mes "Now, do you understand a bit more about using a ^006400Mercenary^000000 and a ^006400Pet^000000? I hope you get a chance to use them in the future.";
+				close;
+			case 6:
+				mes "[Tutorial Instructor]";
+				mes "If you have any questions, come find me again.";
+				close;
+			}
+		}
 		if (@tutorial_restart) {
 			.@tutorial_restart = 1;
 			@tutorial_restart = 0;
@@ -459,126 +580,6 @@ moc_para01,34,178,3	script	Tutorial Instructor	4_M_KHMAN,{
 			mes "then bring them back to me.";
 			close;
 		}
-	} else if (questprogress(9173) == 1) {
-		mes "[Tutorial Instructor]";
-		mes "Do you have any questions?";
-		next;
-		switch(select("Can I do the same quest again?", "About the Quest Window...", "About ENCHANT...", "About Searching Vends...", "About Mercenary and Pets...", "End Conversation.")) {
-		case 1:
-			if (questprogress(9173,PLAYTIME) == 1) {
-				mes "[Tutorial Instructor]";
-				mes "The one method to do the same quests repeatdedly is to do the ^006400Daily Quests^000000.";
-				next;
-				mes "[Tutorial Instructor]";
-				mes "Once you complete a ^006400Daily Quest^000000 and turn it in, wait about a day then come back to get the request and do it all over again!";
-				mes "[Tutorial Instructor]";
-				mes "If you received a daily quest, look at bottom right of the ^006400Quest Window^000000. There is a section that is called ^006400LIMITED^000000. In that section, it'll tell you how much time needs to pass before you can pick up another daily quest.";
-				next;
-				mes "[Tutorial Instructor]";
-				mes "It seems you still have some time left to wait out after finishing my quest. Wait it out a bit more, then come find me and you can get the same quest again.";
-				close;
-			}
-			mes "[Tutorial Instructor]";
-			mes "It seems that about a day has passed since you've finished my quest. Alright, so like the ^006400Daily Quests^000000, you can get a quest from me. Did you want to proceed?";
-			next;
-			switch(select("Yes", "No")) {
-			case 1:
-				@tutorial_restart = 1;
-				goto OnStartQuest;
-			case 2:
-				mes "[Tutorial Instructor]";
-				mes "Okay. But if you change your mind and want to receive a quest, come find me.";
-				close;
-			}
-		case 2:
-			mes "[Tutorial Instructor]";
-			mes "They say that the ^006400Quest Window^000000 details out everything you need to know about your quests.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "If you look at the top left";
-			mes "in the area with the information,";
-			mes "it says ^006400QUEST^000000";
-			mes "and if you click that";
-			mes "it'll show all information";
-			mes "that pertains to the request.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "Using the ^006400Quest Window^000000 will make your life easier. It'll tell you where to go, what items to get or who to find and etc.";
-			close;
-		case 3:
-			mes "[Tutorial Instructor]";
-			mes "006400ENCHANT^000000, in general, is divided into two parts: ^006400SOCKET ENCHANT^000000 and ^006400HIDDEN SOCKET ENCHANT^000000.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "^006400SOCKET ENCHANT^000000 is used to add a SOCKET into equipments and ^006400HIDDEN SOCKET ENCHANT^000000 is used to put in stats into a socket of an armor.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "Of course, in order to do this we are in need of some materials and there is a chance that it may fail, but that's the risk you're taking.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "The people who do the ^006400SOCKET ENCHANT^000000 can be found in ^8B4513Prontera, Morroc, Payon,^000000. ^8B4513Rhitalzen^000000 is in the Refinery and ^0000FFSeiyablem^000000 and ^0000FFReiablem^000000 can be found near the entrance.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "The one who does ^006400HIDDEN SOCKET ENCHANT^000000 is found at the 6 o'clock location of ^8B4513Prontera^000000. Look for the ^0000FFCraftman Apprentice^000000.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "Do you think you understand a little bit more about ^006400ENCHANT^000000?";
-			close;
-		case 4:
-			mes "[Tutorial Instructor]";
-			mes "^006400Vend Search^000000 can be utilized by the ^006400Universal Silver Catalog^000000 item. Since you search through as vends on that map, it'll make it easier for you to find the item that you're looking for.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "The ^006400Universal Silver Catalog^000000";
-			mes "can be obtained from ";
-			mes "the ^0000FFCatalogue Wizard^000000";
-			mes "that is located in South Prontera;";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "It only costs 200 zeny for one";
-			mes "of these and with it you can";
-			mes "search up to 10 times.";
-			mes "You can say that it's a necessity.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "So, are you getting familiar with ^006400Vend Search^000000? Don't just stand there and listen to me. Go ahead and try it for yourself!";
-			close;
-		case 5:
-			mes "[Tutorial Instructor]";
-			mes "Depending on what you need, ^006400Mercenary^000000 and ^006400Pet^000000 can be used in various ways.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "If a 006400Mercenary^000000 gives you direct effect";
-			mes "by fighting for you";
-			mes "then a ^006400Pet^000000 helps you indirectly with their";
-			mes "abilities and varied appearances,";
-			mes "and it captures your heart.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "In order to employ a Mercenary";
-			mes "Go find the ^006400Mercenary Guild^000000";
-			mes "which is by the front door of ^8B4513Prontera^000000.";
-			mes "Go to the ^006400Information Agent^000000";
-			mes "and ask them where the ^006400Mercenary Guild Official^000000";
-			mes "is located and they will let you know.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "In order to get a ^006400Pet^000000, while hunting you will obtain taming items. Use the tame on the monster it's for and you can get a pet.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "Because there is a chance for failure, please use the taming item with great care.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "That aside... you can get a ^006400Mercenary^000000 from the Mercenary Guild and you can get a ^006400Pet^000000 by trading or buying it from another player.";
-			next;
-			mes "[Tutorial Instructor]";
-			mes "Now, do you understand a bit more about using a ^006400Mercenary^000000 and a ^006400Pet^000000? I hope you get a chance to use them in the future.";
-			close;
-		case 6:
-			mes "[Tutorial Instructor]";
-			mes "If you have any questions, come find me again.";
-			close;
-		}
 	}
 	mes "[Tutorial Instructor]";
 	mes "Lately, it has been said that";
diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt
index 1351ab80a..9a67c4af8 100644
--- a/npc/re/quests/quests_malangdo.txt
+++ b/npc/re/quests/quests_malangdo.txt
@@ -1174,10 +1174,49 @@ mal_in02,140,94,0	script	Bob#mal	4_CAT_DOWN,{
 	} else if (ma_tomas == 14) {
 		// Dialogue in repeatable quest is identical.
 		// Uses a variable to determine the quest mode.
-		@mal_bob_q = 1;
-	L_Quest1:
-		.@i = @mal_bob_q;
-		@mal_bob_q = 0;
+		.@i = 1;
+	} else if (ma_tomas == 15) {
+		.@i = 3;
+	} else if (ma_tomas == 16) {
+		mes "[Bob]";
+		mes "Khhh~~~~~~~~~~~~~~~~~~~~~~";
+		mes "That was perfect!";
+		emotion e_no1;
+		next;
+		mes "[Bob]";
+		mes "The adhesive filled in just right!!";
+		mes "The perfect stapler job!!";
+		mes "The speechless and marvelous finishing skill!!";
+		next;
+		mes "[Bob]";
+		mes "Impressed!";
+		mes "Mysterious!";
+		mes "Shocked!";
+		emotion e_omg;
+		next;
+		mes "[Bob]";
+		mes "You did a great job indeed!!!";
+		mes "I will tell Dr. Mali!";
+		if (countitem(Fix_Kit) > 0)
+			delitem Fix_Kit,1;
+		ma_tomas = 17;
+		changequest 11223,11224;
+		close;
+	} else if (ma_tomas > 99) {
+		if (questprogress(11240))
+			.@i = 2;
+		else if (questprogress(11241))
+			.@i = 3;
+	} else {
+		mes "[Bob]";
+		mes "You bow-wow! bow! wow! I mew! mew! mew!";
+		mes "I'm into juice from delicious fish, mew~";
+		emotion e_ho;
+		close;
+	}
+	switch (.@i) {
+	case 1:
+	case 2:
 		mes "[Bob]";
 		mes "You bow-wow! bow! wow! I mew! mew! mew!";
 		mes "I'm into juice from delicious fish, mew~";
@@ -1251,8 +1290,7 @@ mal_in02,140,94,0	script	Bob#mal	4_CAT_DOWN,{
 			emotion e_otl;
 			close;
 		}
-	} else if (ma_tomas == 15) {
-	L_Quest2:
+	case 3:
 		if (checkweight(Knife,1) == 0) {
 			mes " - Notice !! -";
 			mes " - Since you have too many items - ";
@@ -1283,43 +1321,7 @@ mal_in02,140,94,0	script	Bob#mal	4_CAT_DOWN,{
 		mes "Ah, right...";
 		mes "^0000ffYou may fall into the gap of the crack, unfortunately, so please watch out.^000000";
 		close;
-	} else if (ma_tomas == 16) {
-		mes "[Bob]";
-		mes "Khhh~~~~~~~~~~~~~~~~~~~~~~";
-		mes "That was perfect!";
-		emotion e_no1;
-		next;
-		mes "[Bob]";
-		mes "The adhesive filled in just right!!";
-		mes "The perfect stapler job!!";
-		mes "The speechless and marvelous finishing skill!!";
-		next;
-		mes "[Bob]";
-		mes "Impressed!";
-		mes "Mysterious!";
-		mes "Shocked!";
-		emotion e_omg;
-		next;
-		mes "[Bob]";
-		mes "You did a great job indeed!!!";
-		mes "I will tell Dr. Mali!";
-		if (countitem(Fix_Kit) > 0)
-			delitem Fix_Kit,1;
-		ma_tomas = 17;
-		changequest 11223,11224;
-		close;
-	} else if (ma_tomas > 99) {
-		if (questprogress(11240)) {
-			@mal_bob_q = 2;
-			goto L_Quest1;
-		} else if (questprogress(11241))
-			goto L_Quest2;
-	}
-	mes "[Bob]";
-	mes "You bow-wow! bow! wow! I mew! mew! mew!";
-	mes "I'm into juice from delicious fish, mew~";
-	emotion e_ho;
-	close;
+	}
 }
 
 -	script	Crack#mal0	FAKE_NPC,{
@@ -2221,38 +2223,7 @@ mal_dun01,136,122,3	script	Biscuit#mal	4_ASTER,{
 	} else if (ma_tomas == 26) {
 		// Dialogue in repeatable quest is identical.
 		// Uses a variable to determine the quest mode.
-		@mal_bob_q = 1;
-	L_Quest:
-		.@i = @mal_bob_q;
-		@mal_bob_q = 0;
-		if (countitem(Delicious_Jelly) < 30) {
-			mes "[Biscuit]";
-			mes "It's not enough at all~";
-			mes "I need at least 30 Delicious Jelly.";
-			close;
-		}
-		mes "[Biscuit]";
-		mes "You got them well.";
-		mes "There won't be any problem to prepare her meal.";
-		delitem Delicious_Jelly,30;
-		if (.@i == 1) {
-			ma_tomas = 27;
-			changequest 11231,11232;
-		} else {
-			erasequest 11244;
-			setquest 11245;
-			getitem Egrade_Coin,5;
-		}
-		next;
-		mes "[Biscuit]";
-		mes "Though the jelly looks strange, it tastes good...";
-		mes "Star Candy seems to like it a lot as well.";
-		next;
-		mes "[Biscuit]";
-		mes "Have your meal, Star Candy~";
-		mes "Uhhh, why don't you eat it?";
-		mes "You have no appetite?";
-		close;
+		.@i = 1;
 	} else if (ma_tomas == 27) {
 		mes "[Biscuit]";
 		mes "Hooo.. it's natural that you have no appetite...";
@@ -2403,8 +2374,7 @@ mal_dun01,136,122,3	script	Biscuit#mal	4_ASTER,{
 		close;
 	} else if (ma_tomas > 99) {
 		if (questprogress(11244)) {
-			@mal_bob_q = 2;
-			goto L_Quest;
+			.@i = 2;
 		} else if (questprogress(11245,PLAYTIME) == 1) {
 			mes "[Biscuit]";
 			mes "I'll call you when I need you, so don't worry!";
@@ -2430,10 +2400,39 @@ mal_dun01,136,122,3	script	Biscuit#mal	4_ASTER,{
 				close;
 			}
 		}
+	} else {
+		mes "[Biscuit]";
+		mes "Star Candy is really good.";
+		mes "She never loses her smile, even though it's so hard to stand...";
+		close;
+	}
+	if (countitem(Delicious_Jelly) < 30) {
+		mes "[Biscuit]";
+		mes "It's not enough at all~";
+		mes "I need at least 30 Delicious Jelly.";
+		close;
 	}
 	mes "[Biscuit]";
-	mes "Star Candy is really good.";
-	mes "She never loses her smile, even though it's so hard to stand...";
+	mes "You got them well.";
+	mes "There won't be any problem to prepare her meal.";
+	delitem Delicious_Jelly,30;
+	if (.@i == 1) {
+		ma_tomas = 27;
+		changequest 11231,11232;
+	} else {
+		erasequest 11244;
+		setquest 11245;
+		getitem Egrade_Coin,5;
+	}
+	next;
+	mes "[Biscuit]";
+	mes "Though the jelly looks strange, it tastes good...";
+	mes "Star Candy seems to like it a lot as well.";
+	next;
+	mes "[Biscuit]";
+	mes "Have your meal, Star Candy~";
+	mes "Uhhh, why don't you eat it?";
+	mes "You have no appetite?";
 	close;
 }
 
diff --git a/npc/re/quests/quests_malaya.txt b/npc/re/quests/quests_malaya.txt
index 410ee71a7..8c47fb2ed 100644
--- a/npc/re/quests/quests_malaya.txt
+++ b/npc/re/quests/quests_malaya.txt
@@ -2426,67 +2426,64 @@ malaya,326,68,2	script	Pedro the Sailor	4W_SAILOR,{
 				end;
 			} else if (.@playtime == 2) {
 				erasequest 7401;
-				goto L_SetQuest;
 			} else {
 				if (!questprogress(7403)) {
-					if (!questprogress(7402)) {
-						goto L_SetQuest;
+					if (questprogress(7402)) {
+						mes "[Pedro the Sailor]";
+						mes "You know what to do.";
+						mes "Gather the flowers and take it to Mumbaki to get an Offering Bouquet made.";
+						next;
+						mes "[Pedro the Sailor]";
+						mes "Give the Bouquet to Miss Diwata to cheer her up.";
+						mes "....Thank you.";
+						close;
 					}
+				} else {
 					mes "[Pedro the Sailor]";
-					mes "You know what to do.";
-					mes "Gather the flowers and take it to Mumbaki to get an Offering Bouquet made.";
+					mes "Diwata is calm!";
+					mes "I can even feel the difference out here.";
+					mes "I am always in your debt.";
 					next;
 					mes "[Pedro the Sailor]";
-					mes "Give the Bouquet to Miss Diwata to cheer her up.";
-					mes "....Thank you.";
+					mes "You know what? Why don't you do this on a more regular basis?";
+					mes "I think you kind of like doing it.";
+					setquest 7401;
+					erasequest 7403;
+//					if (IsPremiumPcCafe == 10)
+						getitem Lesser_Agimat, 2; // Lesser_Agimat
+//					else
+//						getitem Lesser_Agimat, 1; // Lesser_Agimat
+					getexp 200000,200000;
+					if (!rand(3))
+						$malayaNames$[0] = strcharinfo(PC_NAME);
 					close;
 				}
+			}
+			mes "[Pedro the Sailor]";
+			mes "Ah, the thing is...";
+			mes "We can't go right now..";
+			mes "You see, the ghosts are back...";
+			mes "I'm fed up with nuisance.";
+			next;
+			mes "[Pedro the Sailor]";
+			mes "I mean... Miss Diwata... Isn't feeling very well and, even with the Spiritual Protection";
+			mes "a normal person can't stand it.";
+			next;
+			if (select("I see. Take care then.", "How about a Floral Tribute?") == 1) {
 				mes "[Pedro the Sailor]";
-				mes "Diwata is calm!";
-				mes "I can even feel the difference out here.";
-				mes "I am always in your debt.";
-				next;
-				mes "[Pedro the Sailor]";
-				mes "You know what? Why don't you do this on a more regular basis?";
-				mes "I think you kind of like doing it.";
-				setquest 7401;
-				erasequest 7403;
-//				if (IsPremiumPcCafe == 10)
-					getitem Lesser_Agimat, 2; // Lesser_Agimat
-//				else
-//					getitem Lesser_Agimat, 1; // Lesser_Agimat
-				getexp 200000,200000;
-				if (!rand(3))
-					$malayaNames$[0] = strcharinfo(PC_NAME);
+				mes "I'm glad you understand.";
+				mes "Sigh...";
 				close;
 			}
+			mes "[Pedro the Sailor]";
+			mes "Hmmm. That would be nice.";
+			mes "If she can be soothed with flowers...!";
+			mes "Good luck.";
+			setquest 7402;
+			close;
 		}
 	}
 	end;
-
-L_SetQuest:
-	mes "[Pedro the Sailor]";
-	mes "Ah, the thing is...";
-	mes "We can't go right now..";
-	mes "You see, the ghosts are back...";
-	mes "I'm fed up with nuisance.";
-	next;
-	mes "[Pedro the Sailor]";
-	mes "I mean... Miss Diwata... Isn't feeling very well and, even with the Spiritual Protection";
-	mes "a normal person can't stand it.";
-	next;
-	if (select("I see. Take care then.", "How about a Floral Tribute?") == 1) {
-		mes "[Pedro the Sailor]";
-		mes "I'm glad you understand.";
-		mes "Sigh...";
-		close;
-	}
-	mes "[Pedro the Sailor]";
-	mes "Hmmm. That would be nice.";
-	mes "If she can be soothed with flowers...!";
-	mes "Good luck.";
-	setquest 7402;
-	close;
 }
 
 ma_in01,125,107,3	script	Ghost Diwata	G_SKOGUL,4,4,{
-- 
cgit v1.2.3-70-g09d2