Просмотр исходного кода

* Raw revert of all job files back to r16578, prior to the rewrite in r16579. The updates will be re-applied after more testing is done.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16621 54d463be-8e91-2dee-dedb-b68131a5f0ec
euphyy 12 лет назад
Родитель
Сommit
9800b743e6
39 измененных файлов с 7630 добавлено и 8846 удалено
  1. 579 781
      npc/jobs/2-1/assassin.txt
  2. 266 483
      npc/jobs/2-1/blacksmith.txt
  3. 352 829
      npc/jobs/2-1/hunter.txt
  4. 211 449
      npc/jobs/2-1/knight.txt
  5. 222 379
      npc/jobs/2-1/priest.txt
  6. 238 477
      npc/jobs/2-1/wizard.txt
  7. 2 2
      npc/jobs/2-1a/AssassinCross.txt
  8. 2 2
      npc/jobs/2-1a/HighPriest.txt
  9. 3 3
      npc/jobs/2-1a/HighWizard.txt
  10. 2 2
      npc/jobs/2-1a/LordKnight.txt
  11. 2 2
      npc/jobs/2-1a/Sniper.txt
  12. 2 2
      npc/jobs/2-1a/WhiteSmith.txt
  13. 186 621
      npc/jobs/2-2/alchemist.txt
  14. 273 260
      npc/jobs/2-2/bard.txt
  15. 322 719
      npc/jobs/2-2/crusader.txt
  16. 289 355
      npc/jobs/2-2/dancer.txt
  17. 308 391
      npc/jobs/2-2/monk.txt
  18. 260 448
      npc/jobs/2-2/rogue.txt
  19. 365 566
      npc/jobs/2-2/sage.txt
  20. 2 2
      npc/jobs/2-2a/Champion.txt
  21. 2 2
      npc/jobs/2-2a/Clown.txt
  22. 53 50
      npc/jobs/2-2a/Creator.txt
  23. 2 2
      npc/jobs/2-2a/Gypsy.txt
  24. 2 2
      npc/jobs/2-2a/Paladin.txt
  25. 3 2
      npc/jobs/2-2a/Professor.txt
  26. 2 2
      npc/jobs/2-2a/Stalker.txt
  27. 135 129
      npc/jobs/valkyrie.txt
  28. 280 288
      npc/pre-re/jobs/1-1/acolyte.txt
  29. 175 70
      npc/pre-re/jobs/1-1/archer.txt
  30. 531 93
      npc/pre-re/jobs/1-1/mage.txt
  31. 1087 129
      npc/pre-re/jobs/1-1/merchant.txt
  32. 589 84
      npc/pre-re/jobs/1-1/swordman.txt
  33. 398 189
      npc/pre-re/jobs/1-1/thief.txt
  34. 155 299
      npc/re/jobs/1-1/acolyte.txt
  35. 47 59
      npc/re/jobs/1-1/archer.txt
  36. 52 219
      npc/re/jobs/1-1/mage.txt
  37. 41 130
      npc/re/jobs/1-1/merchant.txt
  38. 59 70
      npc/re/jobs/1-1/swordman.txt
  39. 131 254
      npc/re/jobs/1-1/thief.txt

Разница между файлами не показана из-за своего большого размера
+ 579 - 781
npc/jobs/2-1/assassin.txt


Разница между файлами не показана из-за своего большого размера
+ 266 - 483
npc/jobs/2-1/blacksmith.txt


Разница между файлами не показана из-за своего большого размера
+ 352 - 829
npc/jobs/2-1/hunter.txt


Разница между файлами не показана из-за своего большого размера
+ 211 - 449
npc/jobs/2-1/knight.txt


Разница между файлами не показана из-за своего большого размера
+ 222 - 379
npc/jobs/2-1/priest.txt


Разница между файлами не показана из-за своего большого размера
+ 238 - 477
npc/jobs/2-1/wizard.txt


+ 2 - 2
npc/jobs/2-1a/AssassinCross.txt

@@ -43,7 +43,7 @@ valkyrie,44,58,5	script	Assassin Cross#Valkyrie	725,{
 		mes "Nobody...";
 		close;
 	}
-	if ((ADVJOB == Job_Assassin_Cross) && (Class == Job_Thief_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Assassin_Cross && Class == Job_Thief_High && JobLevel > 39) {
 		mes "[Assassin Cross]";
 		mes "The time has come.";
 		mes "The world needs you...";
@@ -97,4 +97,4 @@ valkyrie,44,58,5	script	Assassin Cross#Valkyrie	725,{
 	mes "while you are here.";
 	mes "Honor to the warriors.";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-1a/HighPriest.txt

@@ -32,7 +32,7 @@ valkyrie,44,42,5	script	High Priest#Valkyrie	60,{
 		mes "us from the forces of evil...";
 		close;
 	}
-	if ((ADVJOB == Job_High_Priest) && (Class == Job_Acolyte_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_High_Priest && Class == Job_Acolyte_High && JobLevel > 39) {
 		mes "[High Priest]";
 		mes "Our world is in";
 		mes "need of people of";
@@ -79,4 +79,4 @@ valkyrie,44,42,5	script	High Priest#Valkyrie	60,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 3 - 3
npc/jobs/2-1a/HighWizard.txt

@@ -38,7 +38,7 @@ valkyrie,44,47,5	script	High Wizard#Valkyrie	735,{
 		mes "was placed in the wrong hands?!";
 		close;
 	}
-	if ((ADVJOB == Job_High_Wizard) && (Class == Job_Mage_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_High_Wizard && Class == Job_Mage_High && JobLevel > 39) {
 		mes "[High Wizard]";
 		mes "It is time.";
 		mes "And Rune-Midgard has";
@@ -62,7 +62,7 @@ valkyrie,44,47,5	script	High Wizard#Valkyrie	735,{
 			mes "all of your remaining Skill Points before returning to me.";
 			close;
 		}
-		jobchange Job_High_Wizard;
+		jobchange Job_high_Wizard;
 		set ADVJOB,0;
 		mes "[High Wizard]";
 		mes "Congratulations.";
@@ -83,4 +83,4 @@ valkyrie,44,47,5	script	High Wizard#Valkyrie	735,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-1a/LordKnight.txt

@@ -36,7 +36,7 @@ valkyrie,44,39,5	script	Lord Knight#Valkyrie	56,{
 		mes "well being of our comrades.";
 		close;
 	}
-	if ((ADVJOB == Job_Lord_Knight) && (Class == Job_Swordman_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Lord_Knight && Class == Job_Swordman_High && JobLevel > 39) {
 		mes "[Lord Knight]";
 		mes "Your time has come!";
 		mes "The world still needs you.";
@@ -81,4 +81,4 @@ valkyrie,44,39,5	script	Lord Knight#Valkyrie	56,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-1a/Sniper.txt

@@ -33,7 +33,7 @@ valkyrie,44,55,5	script	Sniper#Valkyrie	727,{
 		mes "of battling.";
 		close;
 	}
-	if ((ADVJOB == Job_Sniper) && (Class == Job_Archer_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Sniper && Class == Job_Archer_High && JobLevel > 39) {
 		mes "[Sniper]";
 		mes "The world is in";
 		mes "need of mighty Bowmen";
@@ -80,4 +80,4 @@ valkyrie,44,55,5	script	Sniper#Valkyrie	727,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-1a/WhiteSmith.txt

@@ -40,7 +40,7 @@ valkyrie,44,50,5	script	MasterSmith#Valkyrie	731,{
 		mes "crafting...";
 		close;
 	}
-	if ((ADVJOB == Job_WhiteSmith) && (Class == Job_Merchant_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_WhiteSmith && Class == Job_Merchant_High && JobLevel > 39) {
 		mes "[MasterSmith]";
 		mes "The time has come!";
 		mes "Our world needs brave,";
@@ -85,4 +85,4 @@ valkyrie,44,50,5	script	MasterSmith#Valkyrie	731,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

Разница между файлами не показана из-за своего большого размера
+ 186 - 621
npc/jobs/2-2/alchemist.txt


Разница между файлами не показана из-за своего большого размера
+ 273 - 260
npc/jobs/2-2/bard.txt


Разница между файлами не показана из-за своего большого размера
+ 322 - 719
npc/jobs/2-2/crusader.txt


Разница между файлами не показана из-за своего большого размера
+ 289 - 355
npc/jobs/2-2/dancer.txt


Разница между файлами не показана из-за своего большого размера
+ 308 - 391
npc/jobs/2-2/monk.txt


Разница между файлами не показана из-за своего большого размера
+ 260 - 448
npc/jobs/2-2/rogue.txt


Разница между файлами не показана из-за своего большого размера
+ 365 - 566
npc/jobs/2-2/sage.txt


+ 2 - 2
npc/jobs/2-2a/Champion.txt

@@ -38,7 +38,7 @@ valkyrie,53,42,3	script	Champion#Valkyrie	52,{
 		mes "so much in life...";
 		close;
 	}
-	if ((ADVJOB == Job_Champion) && (Class == Job_Acolyte_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Champion && Class == Job_Acolyte_High && JobLevel > 39) {
 		mes "[Champion]";
 		mes "It's time.";
 		mes "Time for great heroes";
@@ -84,4 +84,4 @@ valkyrie,53,42,3	script	Champion#Valkyrie	52,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-2a/Clown.txt

@@ -32,7 +32,7 @@ valkyrie,53,54,3	script	Minstrel#Valkyrie	741,{
 		mes "Sha la la la la~";
 		close;
 	}
-	if ((ADVJOB == Job_Clown) &&( Class == Job_Archer_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Clown && Class == Job_Archer_High && JobLevel > 39) {
 		mes "[Minstrel]";
 		mes "The dreary world";
 		mes "of mortals is in need";
@@ -80,4 +80,4 @@ valkyrie,53,54,3	script	Minstrel#Valkyrie	741,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 53 - 50
npc/jobs/2-2a/Creator.txt

@@ -40,7 +40,7 @@ valkyrie,53,50,3	script	Biochemist#Valkyrie	122,{
 		mes "a place in Valhalla...";
 		close;
 	}
-	if ((ADVJOB == Job_Creator) && (Class == Job_Merchant_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Creator && Class == Job_Merchant_High && JobLevel > 39) {
 		mes "[Biochemist]";
 		mes "Yes...";
 		mes "It's about time.";
@@ -74,60 +74,63 @@ valkyrie,53,50,3	script	Biochemist#Valkyrie	122,{
 		mes "right purposes.";
 		close;
 	}
-	if ((Class == Job_Creator) && (MISC_QUEST & 64) && (getskilllv("AM_BIOETHICS") == 0)) {
-		mes "[Biochemist]";
-		mes "Ah, have you come to";
-		mes "retrieve the memories";
-		mes "lost to you? Yes, you";
-		mes "must be here for the";
-		mes "secrets of life that";
-		mes "were once yours...";
-		next;
-		if (select("Yes:No") == 1) {
-			mes "[Biochemist]";
-			mes "Close your eyes and";
-			mes "put your mind at rest.";
-			mes "We will return to your";
-			mes "past to recollect the";
-			mes "fragments of your lost";
-			mes "memories.";
-			next;
+	else {
+		if (Class == Job_Creator && MISC_QUEST & 64 && getskilllv("AM_BIOETHICS") == 0) {
 			mes "[Biochemist]";
-			mes "When you open your eyes,";
-			mes "you will clearly remember";
-			mes "the secret of life. You will";
-			mes "also remember the weight of";
-			mes "responsibility in using these";
-			mes "secrets for the right ends...";
+			mes "Ah, have you come to";
+			mes "retrieve the memories";
+			mes "lost to you? Yes, you";
+			mes "must be here for the";
+			mes "secrets of life that";
+			mes "were once yours...";
 			next;
-			skill 238,1,0;
+			if (select("Yes:No") == 1) {
+				mes "[Biochemist]";
+				mes "Close your eyes and";
+				mes "put your mind at rest.";
+				mes "We will return to your";
+				mes "past to recollect the";
+				mes "fragments of your lost";
+				mes "memories.";
+				next;
+				mes "[Biochemist]";
+				mes "When you open your eyes,";
+				mes "you will clearly remember";
+				mes "the secret of life. You will";
+				mes "also remember the weight of";
+				mes "responsibility in using these";
+				mes "secrets for the right ends...";
+				next;
+				skill 238,1,0;
+				mes "[Biochemist]";
+				mes "Open your eyes...";
+				mes "Now that you have";
+				mes "remembered how to";
+				mes "create artificial life, I only";
+				mes "ask that you treat all of your";
+				mes "creations with respect.";
+				close;
+			}
 			mes "[Biochemist]";
-			mes "Open your eyes...";
-			mes "Now that you have";
-			mes "remembered how to";
-			mes "create artificial life, I only";
-			mes "ask that you treat all of your";
-			mes "creations with respect.";
+			mes "If you wish to";
+			mes "retrieve your lost";
+			mes "memories, please";
+			mes "come back to me.";
+			mes "The secret to creating";
+			mes "life is no trifling thing...";
 			close;
 		}
 		mes "[Biochemist]";
-		mes "If you wish to";
-		mes "retrieve your lost";
-		mes "memories, please";
-		mes "come back to me.";
-		mes "The secret to creating";
-		mes "life is no trifling thing...";
+		mes "Welcome";
+		mes "to Valhalla,";
+		mes "the Hall of Honor.";
+		next;
+		mes "[Biochemist]";
+		mes "Please make";
+		mes "yourself comfortable";
+		mes "while you are here.";
+		mes "Honor to the warriors!";
 		close;
 	}
-	mes "[Biochemist]";
-	mes "Welcome";
-	mes "to Valhalla,";
-	mes "the Hall of Honor.";
-	next;
-	mes "[Biochemist]";
-	mes "Please make";
-	mes "yourself comfortable";
-	mes "while you are here.";
-	mes "Honor to the warriors!";
-	close;
-}
+}
+

+ 2 - 2
npc/jobs/2-2a/Gypsy.txt

@@ -33,7 +33,7 @@ valkyrie,53,56,3	script	Gypsy#Valkyrie	101,{
 		mes "For me, it's a way of life~";
 		close;
 	}
-	if ((ADVJOB == Job_Gypsy) && (Class == Job_Archer_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Gypsy && Class == Job_Archer_High && JobLevel > 39) {
 		mes "[Gypsy]";
 		mes "The land of Rune-Midgard";
 		mes "is in need of talented women";
@@ -80,4 +80,4 @@ valkyrie,53,56,3	script	Gypsy#Valkyrie	101,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 2 - 2
npc/jobs/2-2a/Paladin.txt

@@ -33,7 +33,7 @@ valkyrie,53,39,3	script	Paladin#Valkyrie	752,{
 		mes "always brighten our path!";
 		close;
 	}
-	if ((ADVJOB == Job_Paladin) && (Class == Job_Swordman_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Paladin && Class == Job_Swordman_High && JobLevel > 39) {
 		mes "[Paladin]";
 		mes "The Holy War will";
 		mes "be upon us before we";
@@ -82,4 +82,4 @@ valkyrie,53,39,3	script	Paladin#Valkyrie	752,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 3 - 2
npc/jobs/2-2a/Professor.txt

@@ -40,7 +40,7 @@ valkyrie,53,47,3	script	Scholar#Valkyrie	743,{
 		mes "process of learning...";
 		close;
 	}
-	if ((ADVJOB == Job_Professor) && (Class == Job_Mage_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Professor && Class == Job_Mage_High && JobLevel > 39) {
 		mes "[Scholar]";
 		mes "Rune-Midgard doesn't";
 		mes "have enough Scholars to";
@@ -89,4 +89,5 @@ valkyrie,53,47,3	script	Scholar#Valkyrie	743,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}
+

+ 2 - 2
npc/jobs/2-2a/Stalker.txt

@@ -41,7 +41,7 @@ valkyrie,53,58,3	script	Stalker#Valkyrie	747,{
 		mes "they need me.";
 		close;
 	}
-	if ((ADVJOB == Job_Stalker) && (Class == Job_Thief_High) && (JobLevel > 39)) {
+	else if (ADVJOB == Job_Stalker && Class == Job_Thief_High && JobLevel > 39) {
 		mes "[Stalker]";
 		mes "This world needs";
 		mes "more heroes who are";
@@ -90,4 +90,4 @@ valkyrie,53,58,3	script	Stalker#Valkyrie	747,{
 	mes "while you are here.";
 	mes "Honor to the warriors!";
 	close;
-}
+}

+ 135 - 129
npc/jobs/valkyrie.txt

@@ -53,7 +53,7 @@ valkyrie,48,86,4	script	Valkyrie#	811,{
 		mes "Honor to the warriors!";
 		close;
 	}
-	if ((Baselevel > 98) && (JobLevel > 49) && ((Class >= Job_Knight) && (Class <= Job_Crusader2))) {
+	else if (Baselevel > 98 && JobLevel > 49 && Class >= Job_Knight && Class <= Job_Crusader2) {
 		mes "[Valkyrie]";
 		mes "Welcome";
 		mes "to Valhalla,";
@@ -84,129 +84,133 @@ valkyrie,48,86,4	script	Valkyrie#	811,{
 			warp "yuno_in02",93,205;
 			end;
 		}
-		mes "[Valkyrie]";
-		mes "I see you've already";
-		mes "released yourself from";
-		mes "all worldy attachments,";
-		mes ""+ strcharinfo(0) +".";
-		next;
-		mes "[Valkyrie]";
-		mes "That's an admirable attitude for an adventurer such as yourself. Honor comes when you abandon all personal desires for the sake of mankind.";
-		next;
-		if (SkillPoint) {
+		else {
+			mes "[Valkyrie]";
+			mes "I see you've already";
+			mes "released yourself from";
+			mes "all worldy attachments,";
+			mes ""+ strcharinfo(0) +".";
+			next;
+			mes "[Valkyrie]";
+			mes "That's an admirable attitude for an adventurer such as yourself. Honor comes when you abandon all personal desires for the sake of mankind.";
+			next;
+			if (SkillPoint) {
+				mes "[Valkyrie]";
+				mes "Hmm... I sense that you have";
+				mes "some lingering attachment or";
+				mes "unfinished business in your";
+				mes "current life. Take care of that,";
+				mes "and bring closure to your present life.";
+				close2;
+				warp "yuno_in02",93,205;
+				end;
+			}
+			mes "[Valkyrie]";
+			mes "Now, let me remove all";
+			mes "of your present memories...";
+			mes "However, you will be able to";
+			mes "remember the most honorable";
+			mes "moments of this life.";
+			next;
+			mes "[Valkyrie]";
+			mes "With one,";
+			mes "I will ask the";
+			mes "goddess Urd to remove";
+			mes "all of your present";
+			mes "memories.";
+			next;
+			mes "[Valkyrie]";
+			mes "With two,";
+			mes "I will ask the";
+			mes "goddess Verdandi to keep";
+			mes "and record the most honorable moments of your present life.";
+			next;
 			mes "[Valkyrie]";
-			mes "Hmm... I sense that you have";
-			mes "some lingering attachment or";
-			mes "unfinished business in your";
-			mes "current life. Take care of that,";
-			mes "and bring closure to your present life.";
+			mes "With three,";
+			mes "I will ask the";
+			mes "goddess Skuld to";
+			mes "guide you to your";
+			mes "next life.";
+			next;
+			mes "[Valkyrie]";
+			mes "One...";
+			callfunc "F_ClearJobVar";
+			next;
+			mes "[Valkyrie]";
+			mes "One...";
+			mes "Two......";
+			next;
+			mes "[Valkyrie]";
+			mes "One...";
+			mes "Two......";
+			mes "And Three.";
+			set ADVJOB, Class+Job_Novice_High; //memo the target 3rd Job ID
+			if(ADVJOB == Job_Lord_Knight2) set ADVJOB,Job_Lord_Knight;
+			if(ADVJOB == Job_Paladin2) set ADVJOB,Job_Paladin;
+			jobchange Job_Novice_High;
+			resetlvl(1);
+			set MISC_QUEST,MISC_QUEST | 1024; //<-reset Skill Reset Event
+			skill 142,1,0;
+			skill 143,1,0;
+			completequest 1000;
+			next;
+			mes "[Valkyrie]";
+			mes "Congratulations.";
+			mes "You are now reborn";
+			mes "into a brand new life.";
+			mes "Please take these small gifts";
+			mes "in preparation for your new adventures.";
+			getitem 1202,1; //Knife_
+			getitem 2302,1; //Cotton_Shirt_
+			next;
+			mes "[Valkyrie]";
+			mes "I wish that the release the goddess Urd has granted you proves to be a blessing. I hope that the memories Verdandi has recorded will always honor you.";
+			next;
+			mes "[Valkyrie]";
+			mes "And I pray that the new life to which the goddess Skuld will guide you will be even more honorable than your last.";
 			close2;
-			warp "yuno_in02",93,205;
+			switch (ADVJOB) {
+			case 4008:
+			case 4015:
+				warp "izlude",94,103; break;
+			case 4009:
+			case 4016:
+				warp "prontera",273,354; break;
+			case 4010:
+			case 4017:
+				warp "geffen",120,60; break;
+			case 4011:
+			case 4019:
+				warp "alberta",116,57; break;
+			case 4012:
+			case 4020:
+			case 4021:
+				warp "payon",69,100; break;
+			case 4013:
+			case 4018:
+				warp "morocc",154,50; break;
+			default:
+				warp "yuno_in02",93,205; break;
+			}
 			end;
 		}
+	}
+	else {
 		mes "[Valkyrie]";
-		mes "Now, let me remove all";
-		mes "of your present memories...";
-		mes "However, you will be able to";
-		mes "remember the most honorable";
-		mes "moments of this life.";
-		next;
-		mes "[Valkyrie]";
-		mes "With one,";
-		mes "I will ask the";
-		mes "goddess Urd to remove";
-		mes "all of your present";
-		mes "memories.";
-		next;
-		mes "[Valkyrie]";
-		mes "With two,";
-		mes "I will ask the";
-		mes "goddess Verdandi to keep";
-		mes "and record the most honorable moments of your present life.";
-		next;
-		mes "[Valkyrie]";
-		mes "With three,";
-		mes "I will ask the";
-		mes "goddess Skuld to";
-		mes "guide you to your";
-		mes "next life.";
-		next;
-		mes "[Valkyrie]";
-		mes "One...";
-		callfunc "F_ClearJobVar";
-		next;
-		mes "[Valkyrie]";
-		mes "One...";
-		mes "Two......";
-		next;
-		mes "[Valkyrie]";
-		mes "One...";
-		mes "Two......";
-		mes "And Three.";
-		set ADVJOB, Class+Job_Novice_High; //memo the target 3rd Job ID
-		if(ADVJOB == Job_Lord_Knight2) set ADVJOB,Job_Lord_Knight;
-		if(ADVJOB == Job_Paladin2) set ADVJOB,Job_Paladin;
-		jobchange Job_Novice_High;
-		resetlvl(1);
-		set MISC_QUEST,MISC_QUEST | 1024; //<-reset Skill Reset Event
-		skill 142,1,0;
-		skill 143,1,0;
-		completequest 1000;
-		next;
-		mes "[Valkyrie]";
-		mes "Congratulations.";
-		mes "You are now reborn";
-		mes "into a brand new life.";
-		mes "Please take these small gifts";
-		mes "in preparation for your new adventures.";
-		getitem 1202,1; //Knife_
-		getitem 2302,1; //Cotton_Shirt_
-		next;
-		mes "[Valkyrie]";
-		mes "I wish that the release the goddess Urd has granted you proves to be a blessing. I hope that the memories Verdandi has recorded will always honor you.";
+		mes "Welcome";
+		mes "to Valhalla,";
+		mes "the Hall of Honor.";
 		next;
 		mes "[Valkyrie]";
-		mes "And I pray that the new life to which the goddess Skuld will guide you will be even more honorable than your last.";
+		mes "Unfortunately, you have not yet been invited here. I ask you to leave immediately. Honor to the warriors!";
 		close2;
-		switch (ADVJOB) {
-		case 4008:
-		case 4015:
-			warp "izlude",94,103; break;
-		case 4009:
-		case 4016:
-			warp "prontera",273,354; break;
-		case 4010:
-		case 4017:
-			warp "geffen",120,60; break;
-		case 4011:
-		case 4019:
-			warp "alberta",116,57; break;
-		case 4012:
-		case 4020:
-		case 4021:
-			warp "payon",69,100; break;
-		case 4013:
-		case 4018:
-			warp "morocc",154,50; break;
-		default:
-			warp "yuno_in02",93,205; break;
-		}
+		warp "yuno_in02",93,205;
 		end;
 	}
-	mes "[Valkyrie]";
-	mes "Welcome";
-	mes "to Valhalla,";
-	mes "the Hall of Honor.";
-	next;
-	mes "[Valkyrie]";
-	mes "Unfortunately, you have not yet been invited here. I ask you to leave immediately. Honor to the warriors!";
-	close2;
-	warp "yuno_in02",93,205;
-	end;
 }
 
 yuno_in02,88,164,5	script	Metheus Sylphe#Library	742,{
-	if ((Baselevel > 98) && (JobLevel > 49) && ((Class >= Job_Knight) && (Class <= Job_Crusader2))) {
+	if (Baselevel > 98 && JobLevel > 49 && Class >= Job_Knight && Class <= Job_Crusader2) {
 		if (valkyrie_Q == 0) {
 			mes "[Metheus Sylphe]";
 			mes "Welcome to the Library of the Schweicherbil Magic Academy.";
@@ -271,7 +275,7 @@ yuno_in02,93,207,1	script	Book of Ymir	111,{
 		warp "valkyrie",48,8;
 		end;
 	}
-	if ((Baselevel > 98) && (JobLevel > 49) && ((Class >= Job_Knight) && (Class <= Job_Crusader2))) {
+	else if (Baselevel > 98 && JobLevel > 49 && Class >= Job_Knight && Class <= Job_Crusader2) {
 		if (valkyrie_Q != 0) {
 			mes "[The Book of Ymir]";
 			mes "...Therefore, ancient heroes were";
@@ -339,7 +343,7 @@ yuno_in02,93,207,1	script	Book of Ymir	111,{
 }
 
 yuno_in05,49,43,1	script	Heart of Ymir	111,{
-	if ((Baselevel > 98) && (JobLevel > 49) && ((Class >= Job_Knight) && (Class <= Job_Crusader2))) {
+	if (Baselevel > 98 && JobLevel > 49 && Class >= Job_Knight && Class <= Job_Crusader2) {
 		if (valkyrie_Q == 2) warp "valkyrie",48,8;
 	}
 	end;
@@ -361,22 +365,23 @@ valkyrie,44,33,5	script	Teleporter	124,{
 		mes "..........";
 		close;
 	}
-	mes "[Teleporter]";
-	mes "Honorable one,";
-	mes "which place do you wish to go?";
-	next;
-	switch(select("Prontera:Morroc:Payon:Geffen:Alberta:Izlude:Al De Baran:Comodo:Juno")) {
-	case 1: callsub S_Warpchar,"prontera",116,72;
-	case 2: callsub S_Warpchar,"morocc",156,46;
-	case 3: callsub S_Warpchar,"payon",69,100;
-	case 4: callsub S_Warpchar,"geffen",120,39;
-	case 5: callsub S_Warpchar,"alberta",117,56;
-	case 6: callsub S_Warpchar,"izlude",94,103;
-	case 7: callsub S_Warpchar,"aldebaran",91,105;
-	case 8: callsub S_Warpchar,"comodo",209,143;
-	case 9: callsub S_Warpchar,"yuno",328,101;
+	else {
+		mes "[Teleporter]";
+		mes "Honorable one,";
+		mes "which place do you wish to go?";
+		next;
+		switch(select("Prontera:Morroc:Payon:Geffen:Alberta:Izlude:Al De Baran:Comodo:Juno")) {
+		case 1: callsub S_Warpchar,"prontera",116,72;
+		case 2: callsub S_Warpchar,"morocc",156,46;
+		case 3: callsub S_Warpchar,"payon",69,100;
+		case 4: callsub S_Warpchar,"geffen",120,39;
+		case 5: callsub S_Warpchar,"alberta",117,56;
+		case 6: callsub S_Warpchar,"izlude",94,103;
+		case 7: callsub S_Warpchar,"aldebaran",91,105;
+		case 8: callsub S_Warpchar,"comodo",209,143;
+		case 9: callsub S_Warpchar,"yuno",328,101;
+		}
 	}
-
 S_WarpChar:
 	mes "[Teleporter]";
 	mes "Have a nice trip.";
@@ -389,4 +394,5 @@ S_WarpChar:
 // Warps
 //============================================================ 
 valkyrie,48,73,0	warp	valk01#1	1,1,valkyrie,48,64
-valkyrie,48,66,0	warp	valk01#2	1,1,valkyrie,48,75
+valkyrie,48,66,0	warp	valk01#2	1,1,valkyrie,48,75
+

+ 280 - 288
npc/pre-re/jobs/1-1/acolyte.txt

@@ -1,21 +1,38 @@
 //===== rAthena Script ======================================= 
-//= Renewal Acolyte Job Change
+//= Acolyte Job Quest
 //===== By: ================================================== 
-//= Kisuka
+//= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.2
+//= 2.2
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Job Change to Acolyte Class
+//= [Aegis Conversion]
+//= Job quest for Acolyte classes
 //===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added back the npcs used for the priest quest.
-//= 1.2 Added Baby job change support. [Masao]
+//= v1.0 Fully working.
+//= v1.1 Added function calls for Priest Quest.
+//= v1.2 Fixed Marthilda, Yosuke bugs. [Lupus]
+//= v1.2a Added instant job change for High Novice [Lupus]
+//= v1.3 Added Baby Class support [Lupus]
+//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= 1.5 Now saves/restores all quest skills [Lupus]
+//= 1.6 Merged back JFunc [Lupus]
+//= 1.7 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	No longer uses function "F_ToHigh"
+//=	Proper dialog for Priest job quest is unused (for now.)
+//= 1.7a Functions now make use of proper priest quest dialog [L0ne_W0lf]
+//= 1.8 Removed an Unnecessary "set job_acolyte_q,0;" [Samuray22]
+//= 1.8a More bug fixes care of Crashy. [L0ne_W0lf]
+//= 1.9 Changed Marthilda to Mathilda. [L0ne_W0llf]
+//= 2.0 Fixed High Acolytesnot being given holy light. [L0ne_W0lf]
+//= 2.1 Added Quest Log commands. [L0ne_W0lf]
+//= 2.2 Fixed an issue with completequest by adding checkquest. [Kisuka]
 //============================================================ 
+
 prt_church,184,41,4	script	Cleric#aco	60,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_High_Priest || ADVJOB == Job_Champion)) {
+		if (ADVJOB == Job_High_Priest || ADVJOB == Job_Champion) {
 			if (Class == Job_Novice_High) {
 				mes "[Father Mareusis]";
 				mes "Ah, I sense you have endured";
@@ -39,65 +56,143 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 				mes "wish you luck on your";
 				mes "new life's journey.";
 				next;
-				skill 143,0,1;
+				skill 143,0,0;
 				jobchange Job_Acolyte_High;
 				skill 156,1,0;
 				mes "[Father Mareusis]";
 				mes "Now, venture forth and seek those who need your help. May God light your path.";
 				close;
 			}
+			else {
+				mes "[Father Mareusis]";
+				mes "Now, venture forth to seek people who need your help. May God enlighten your way.";
+				close;
+			}
+		}
+		else {
 			mes "[Father Mareusis]";
-			mes "Now, venture forth to seek people who need your help. May God enlighten your way.";
+			mes "I sense that you have endured a past life experience. You must have learned many things before entering Valhalla.";
+			next;
+			mes "[Father Mareusis]";
+			mes "However, I can tell that you are not suited to be an Acolyte. Please remember who you were in your past life and find your path.";
 			close;
 		}
-		mes "[Father Mareusis]";
-		mes "I sense that you have endured a past life experience. You must have learned many things before entering Valhalla.";
-		next;
-		mes "[Father Mareusis]";
-		mes "However, I can tell that you are not suited to be an Acolyte. Please remember who you were in your past life and find your path.";
-		close;
 	}
 	mes "[Father Mareusis]";
 	mes "What is it that you seek?";
 	next;
-	switch (select("Father, I want to be a Acolyte.:Acolyte Requirements.:Just looking around.")) {
+	switch(select("Father, I want to be a Acolyte.:Acolyte Requirements.:Just looking around.")) {
 	case 1:
-		if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-			mes "[Father Mareusis]";
+		mes "[Father Mareusis]";
+		if (BaseJob == Job_Acolyte) {
 			mes "Are you feeling okay today? I can tell by your attire that you are already an Acolyte. You're not joking around, are you?";
 			close;
 		}
-		if ((Class != Job_Baby) && (Class != Job_Novice)) {
-			mes "[Father Mareusis]";
+		else if (BaseJob != Job_Novice) {
 			mes "I'm sorry, but we can only accept Novices as applicants for the job change to Acolyte.";
 			close;
 		}
-		mes "[Father Mareusis]";
-		mes "Do you truly wish to become a servant of God?";
-		mes "Let's see whether you are ready for it or not... Hmm...";
+		if (job_acolyte_q == 0) {
+			mes "Do you truly";
+			mes "wish to become";
+			mes "a servant of God?";
+			next;
+			if (select("Yes Father, I do.:Nope, I lied.") == 1) {
+				mes "[Father Mareusis]";
+				mes "Good. I accept " + strcharinfo(0) + "'s will to become an Acolyte. You understand that you must do penance before you can become a servant of God, right?";
+				next;
+				mes "[Father Mareusis]";
+				mes "Well, I will";
+				mes "give you a mission...";
+				switch(rand(3)) {
+				default:
+					set job_acolyte_q,2;
+					mes "Please visit ^000077Father Rubalkabara^000000, a member of the Prontera Parish, and return here. He has been practicing asceticism in the ^000077Relics NorthEast of Prontera City^000000.";
+					setquest 1001;
+					break;
+				case 1:
+					set job_acolyte_q,3;
+					mes "Please visit ^000077Mother Mathilda^000000 and then return to me. She has been practicing asceticism near ^000077Morroc Town, SouthWest of Prontera City^000000.";
+					setquest 1002;
+					break;
+				case 2:
+					set job_acolyte_q,4;
+					mes "Please visit ^000077Father Yosuke^000000 and return here. He has been practicing asceticism around ^000077a bridge somewhere NorthWest of Prontera^000000.";
+					setquest 1003;
+					break;
+				}
+				next;
+				mes "[Father Mareusis]";
+				mes "May the grace of God light your path and guide you during your journey of penance.";
+				close;
+			}
+			mes "[Father Mareusis]";
+			mes "You lied?";
+			mes "It is good that you";
+			mes "have confessed your";
+			mes "wrongdoing. Go in";
+			mes "peace, my son.";
+			close;
+		}
+		mes "Oh, you've come back. Let me check and see if you are ready to serve God. Let's see...";
 		next;
+		mes "[Father Mareusis]";
 		if (getskilllv("NV_BASIC") < 9) {
-			mes "[Father Mareusis]";
 			mes "Good Lord! Haven't you accomplished the Basic Training yet?! It's important that you finish that!";
 			next;
 			mes "[Father Mareusis]";
 			mes "You should have trained more! Go back and make sure you reach Novice Job Level 9 and learn all of the Basic Skills!";
 			close;
 		}
-		mes "[Father Mareusis]";
-		mes "Hmm... your job level is high enough and you've proven your qualification.";
+		if (job_acolyte_q < 5) {
+			mes "Oh? I can't find your name on the Registration List.";
+			next;
+			switch(job_acolyte_q) {
+			case 2:
+				mes "[Father Mareusis]";
+				mes "Please visit ^000077Father Rubalkabara^000000, a member of the Prontera Parish, and return here.";
+				next;
+				mes "[Father Mareusis]";
+				mes "He has been practicing asceticism in the ^000077Relics at the NorthEast of Prontera City^000000.";
+				break;
+			case 3:
+				mes "[Father Mareusis]";
+				mes "Please Visit ^000077Mother Mathilda^000000 and return here to me.";
+				next;
+				mes "[Father Mareusis]";
+				mes "She has been practicing asceticism near ^000077Morroc Town, located SouthWest of Prontera City^000000.";
+				break;
+			case 4:
+				mes "[Father Mareusis]";
+				mes "Please visit ^000077 Father Yosuke ^000000 and return here to me.";
+				next;
+				mes "[Father Mareusis]";
+				mes "He has been practicing asceticism near a ^000077bridge somewhere to the NorthWest of Prontera^000000.";
+				break;
+			}
+			next;
+			mes "[Father Mareusis]";
+			mes "May the grace of God brighten your path and guide you on your journey of penance.";
+			close;
+		}
+		mes "Hmm...";
+		mes "Your name is on the list and you've proven your qualification.";
 		next;
 		mes "[Father Mareusis]";
 		mes "I am proud to say that you are now ready to become an Acolyte!";
 		next;
-		skill 143,0,1;
-		if(Class == Job_Baby){
-			jobchange Job_Baby_Acolyte;
-		} else {
-			jobchange Job_Acolyte;
+		skill 143,0,0;
+		callfunc "Job_Change",Job_Acolyte;
+		callfunc "F_ClearJobVar";
+		if(checkquest(1001) != -1) {
+			completequest 1001;
+		}
+		else if(checkquest(1002) != -1) {
+			completequest 1002;
+		}
+		else {
+			completequest 1003;
 		}
-		set ACO_Q,0;
-		getitem 1545,1; //N_Mace
 		mes "[Father Mareusis]";
 		mes "Always remember to be thankful to God, who is taking care of us all the time.";
 		next;
@@ -109,15 +204,43 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 		close;
 	case 2:
 		mes "[Father Mareusis]";
-		mes "Do you wish to become an Acolyte?";
-		mes "Then, you must fulfill the following requirements thinking those are the practices given by God.";
+		mes "Do you wish to become an Acolyte? You must fulfill two requirements.";
+		next;
+		mes "[Father Mareusis]";
+		mes "First, you have to reach at least Novice Job Level 9 and learn all of the Basic Skills. Second, you will be given a trial of penance to overcome.";
 		next;
 		mes "[Father Mareusis]";
-		mes "First, you have to reach at least Novice Job Level 9 and learn all of the Basic Skills.";
-		mes "This is the most basic thing to do, so you need to regard it as the way of training yourself.";
+		if (job_acolyte_q != 0) {
+			switch(job_acolyte_q) {
+			case 2:
+				mes "For your trial, please visit ^000077Father Rubalkabara ^000000 and then return here to me.";
+				next;
+				mes "[Father Mareusis]";
+				mes "He is practicing asceticism in the ^000077Relics at the NorthEast of Prontera City^000000.";
+				break;
+			case 3:
+				mes "For your trial, please visit ^000077Mother Mathilda^000000 and return here to me.";
+				next;
+				mes "[Father Mareusis]";
+				mes "She has been practicing asceticism near ^000077Morroc, located to the SouthWest of Prontera City^000000.";
+				break;
+			default:
+				mes "For your trial, please visit ^000077Father Yosuke^000000 and return here to me.";
+				next;
+				mes "[Father Mareusis]";
+				mes "He has been practicing asceticism around a bridge somewhere ^000077NorthWest of Prontera^000000.";
+				break;
+			}
+			next;
+			mes "[Father Mareusis]";
+			mes "May the grace of God light your path and guide you on your journey of penance.";
+		}
+		else {
+			mes "The destination for this trial will be decided once you fill the application form.";
+		}
 		next;
 		mes "[Father Mareusis]";
-		mes "When you think you fulfilled this requirement I've asked of you. As long as your desire to serve God and others is sincere, you will be able to make it.";
+		mes "Please come back after fulfilling the two requirements I've asked of you. As long as your desire to serve God and others is sincere, you will be able to make it.";
 		close;
 	case 3:
 		close;
@@ -125,18 +248,17 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 }
 
 prt_fild03,365,255,2	script	Ascetic#aco	89,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 6) {
-			mes "[Father Rubalkabara]";
+	mes "[Father Rubalkabara]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 6) {
 			mes "Please take care. They should know that you've met me by the time you arrive at the Prontera Sanctuary.";
 			next;
 			mes "[Father Rubalkabara]";
 			mes "I've sent a carrier pigeon with a message. I hope it will arrive there safely...";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 2) {
-				mes "[Father Rubalkabara]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 2) {
 				mes "Oh...? You must be the one who aspires to become an Acolyte. I've already received news from the Sanctuary that you might be coming.";
 				next;
 				mes "[Father Rubalkabara]";
@@ -156,207 +278,133 @@ prt_fild03,365,255,2	script	Ascetic#aco	89,{
 				next;
 				mes "[Father Rubalkabara]";
 				mes "Farewell.";
+				close2;
 				savepoint "prt_fild03",361,255;
-				set ACO_Q,6;
-				close;
+				set job_acolyte_q,6;
+				end;
 			}
-			mes "[Father Rubalkabara]";
-			mes "Oh...";
-			mes "Are you one of the";
-			mes "Acolyte applicants...?";
-			mes "Let's see...";
-			next;
-			mes "[Father Rubalkabara]";
-			mes "Your name is " + strcharinfo(0) + "?";
-			mes "I don't think your name";
-			mes "is on my list. Hmmm...";
-			next;
-			mes "[Father Rubalkabara]";
-			mes "Why don't you go back to the Prontera Sanctuary and check again?";
-			close;
-		}
-		mes "[Father Rubalkabara]";
-		mes "Huh? What brings you here? This is a very dangerous place for a Novice like yourself!";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Father Rubalkabara]";
-				mes "Ah yes, so you're the young Acolyte who wishes to become a Priest.";
-				next;
-				mes "[Father Rubalkabara]";
-				mes "I've received the message from Bishop Paul. Since you made the pilgrimage, I hope you accomplish your goal of becoming a Priest.";
+			else {
+				mes "Oh...";
+				mes "Are you one of the";
+				mes "Acolyte applicants...?";
+				mes "Let's see...";
 				next;
 				mes "[Father Rubalkabara]";
-				mes "Also, if you have a chance, please visit this abbey again. It's a sacred place for our Church.";
+				mes "Your name is " + strcharinfo(0) + "?";
+				mes "I don't think your name";
+				mes "is on my list. Hmmm...";
 				next;
 				mes "[Father Rubalkabara]";
-				mes "Well then, please head to your next destination for your pilgrimage. Be safe in your travels.";
-				savepoint "prt_fild03",361,255;
-				set ACO_Q2,2;
+				mes "Why don't you go back to the Prontera Sanctuary and check again?";
 				close;
 			}
-			if (ACO_Q2 == 2) {
-				mes "[Father Rubalkabara]";
-				mes "Please be hurry to the next destination for your pilgrimage. I hope you become a Priest soon.";
-				close;
-			}
-			mes "[Father Rubalkabara]";
-			mes "May I ask why you have returned? Please go back and continue your religious practice.";
+		}
+		else {
+			mes "Huh? What brings you here? This is a very dangerous place for a Novice like yourself!";
 			close;
 		}
-		mes "[Father Rubalkabara]";
-		mes "I have no idea what brought you here, but please excuse me.";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Father Rubalkabara]";
-		mes "Greetings.";
-		next;
-		mes "[Father Rubalkabara]";
-		mes "Welcome to the Deep. Feel free to sit and contemplate God's message with me. This place is beautiful, even if danger accompanies its sense of serenity...";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_FatherRub";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Greetings.";
+			next;
+			mes "[Father Rubalkabara]";
+			mes "Welcome to the Deep. Feel free to sit and contemplate God's message with me. This place is beautiful, even if danger accompanies its sense of serenity...";
+			close;
+		}
+		else {
+			mes "Oh ho...";
+			mes "Have you come into the Deep here for training? Or are you just a Wanderer?";
+			next;
+			mes "[Father Rubalkabara]";
+			mes "Whoever you are, please take care of yourself. The monsters in here are shockingly strong, contrary to their cute appearance.";
+			close;
+		}
 	}
-	mes "[Father Rubalkabara]";
-	mes "Oh ho...";
-	mes "Have you come into the Deep here for training? Or are you just a Wanderer?";
-	next;
-	mes "[Father Rubalkabara]";
-	mes "Whoever you are, please take care of yourself. The monsters in here are shockingly strong, contrary to their cute appearance.";
-	close;
 }
 
-moc_fild07,41,355,4	script	Ascetic#2	95,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 6) {
-			mes "[Mother Marthilda]";
+moc_fild07,41,355,4	script	Ascetic#2aco	95,{
+	mes "[Mother Mathilda]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 7) {
 			mes "I will send a carrier pigeon to the Prontera Sanctuary. When you return, the Priest there should already have received my message.";
 			next;
-			mes "[Mother Marthilda]";
+			mes "[Mother Mathilda]";
 			mes "I will pray to God, and hope that you become an Acolyte soon.";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 3) {
-				mes "[Mother Marthilda]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 3) {
 				mes "Ah, you must be one of the Acolyte applicants. I sincerely welcome you.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "What is your name? " + strcharinfo(0) + "? Let's see... Ah, you're on my list.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "I will send a message to the Sanctuary confirming that you, " + strcharinfo(0) + " visited me and completed your penance.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
+				close2;
 				savepoint "moc_fild07",35,355;
-				set ACO_Q,7;
-				close;
+				set job_acolyte_q,7;
+				end;
 			}
-			mes "[Mother Marthilda]";
-			mes "Ah...!";
-			mes "You must be one";
-			mes "of the Acolyte applicants.";
-			mes "I sincerely welcome you.";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Now, what is your name?";
-			mes "" + strcharinfo(0) + "? Let's see...";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Hmm...";
-			mes "It seems your name";
-			mes "is not on my list...";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Perhaps you should return to the Prontera Sanctuary and check the destination for your penance trial once again.";
-			close;
-		}
-		mes "[Mother Marthilda]";
-		mes "...";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Mother Marthilda]";
-				mes "Hmm...";
-				mes "It seems you're";
-				mes "training to become";
-				mes "a Priest.";
-				next;
-				mes "[Mother Marthilda]";
-				mes "However, at this point in your pilgrimage, I am not the person that you should be visiting.";
+			else {
+				mes "Ah...!";
+				mes "You must be one";
+				mes "of the Acolyte applicants.";
+				mes "I sincerely welcome you.";
 				next;
-				mes "[Mother Marthilda]";
-				mes "Perhaps you should ask Bishop Paul or Sister Cecilia once again. Well, may God be with you...";
-				close;
-			}
-			if (ACO_Q2 == 2) {
-				mes "[Mother Marthilda]";
-				mes "Ah, are you";
-				mes "a Priest trainee...?";
-				mes "Welcome!";
+				mes "[Mother Mathilda]";
+				mes "Now, what is your name?";
+				mes "" + strcharinfo(0) + "? Let's see...";
 				next;
-				mes "[Mother Marthilda]";
-				mes "We Priests are obliged to spread the message of God to";
-				mes "the peoples of the Earth.";
-				next;
-				mes "[Mother Marthilda]";
-				mes "After you become a Priest, your travels may take you to the Morroc Pyramids. I hope that you may release the Undead there from the evil to which they are bound.";
+				mes "[Mother Mathilda]";
+				mes "Hmm...";
+				mes "It seems your name";
+				mes "is not on my list...";
 				next;
-				mes "[Mother Marthilda]";
-				mes "Well then...";
-				mes "I shall pray to";
-				mes "God for safety";
-				mes "on your journey.";
-				savepoint "moc_fild07",35,355;
-				set ACO_Q2,3;
+				mes "[Mother Mathilda]";
+				mes "Perhaps you should return to the Prontera Sanctuary and check the destination for your penance trial once again.";
 				close;
 			}
-			if (ACO_Q2 == 3) {
-				mes "[Mother Marthilda]";
-				mes "Please leave soon, and";
-				mes "continue your training.";
-				close;
-			}
-			mes "[Mother Marthilda]";
-			mes "May I ask you the reason you came back? Please continue your training.";
+		}
+		else {
+			mes "...";
 			close;
 		}
-		mes "[Mother Marthilda]";
-		mes "May God";
-		mes "be with you...";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Mother Marthilda]";
-		mes "Hello there~";
-		next;
-		mes "[Mother Marthilda]";
-		mes "How is your practice coming along? I certainly hope you're enjoying living in the grace of God.";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_MotherMart";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Hello there~";
+			next;
+			mes "[Mother Mathilda]";
+			mes "How is your practice coming along? I certainly hope you're enjoying living in the grace of God.";
+			close;
+		}
+		else {
+			mes "May God";
+			mes "be with you...";
+			close;
+		}
 	}
-	mes "[Mother Marthilda]";
-	mes "May God";
-	mes "be with you...";
-	close;
 }
 
-prt_fild00,208,218,6	script	Ascetic#3	98,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 8) {
-			mes "[Father Yosuke]";
+prt_fild00,208,218,6	script	Ascetic#3aco	98,{
+	mes "[Father Yosuke]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 8) {
 			mes "What?";
 			next;
 			mes "[Father Yosuke]";
 			mes "Have you any more business with me?! You don't! Go back to the Sanctuary now!";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 4) {
-				mes "[Father Yosuke]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 4) {
 				mes "Hey.";
 				mes "Whatever you are,";
 				mes "you look like an";
@@ -375,104 +423,48 @@ prt_fild00,208,218,6	script	Ascetic#3	98,{
 				next;
 				mes "[Father Yosuke]";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
+				close2;
 				savepoint "prt_fild00",206,230;
-				set ACO_Q,8;
-				close;
+				set job_acolyte_q,8;
+				end;
 			}
-			mes "[Father Yosuke]";
-			mes "Hey.";
-			mes "You look like an Acolyte Applicant. Am I right?";
-			next;
-			mes "[Father Yosuke]";
-			mes "Not bad at all, you've made it all the way here from Prontera. So what's your name, kid?";
-			next;
-			mes "[Father Yosuke]";
-			mes "" + strcharinfo(0) + ", huh? Why isn't your name on my list?";
-			next;
-			mes "[Father Yosuke]";
-			mes "You probably made a mistake. Go back to the Santuary, and check with the Bishop.";
-			close;
-		}
-		mes "[Father Yosuke]";
-		mes "You...";
-		mes "Novice.";
-		mes "There something";
-		mes "you wanna tell me?";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Father Yosuke]";
-				mes "Hmm...";
-				mes "A Priest trainee, eh?";
-				next;
-				mes "[Father Yosuke]";
-				mes "Well, you got the wrong person. If you're supposed to meet up with me at all, it'd be later.";
-				next;
-				mes "[Father Yosuke]";
-				mes "But that's your own fault.";
-				mes "Now, go back to Church, kid.";
-				close;
-			}
-			if (ACO_Q2 == 2) {
-				mes "[Father Yosuke]";
-				mes "Hmm...";
-				mes "A Priest trainee, eh?";
-				next;
-				mes "[Father Yosuke]";
-				mes "Well, you got the wrong person. If you're supposed to meet up with me at all, it'd be later.";
+			else {
+				mes "Hey.";
+				mes "You look like an Acolyte Applicant. Am I right?";
 				next;
 				mes "[Father Yosuke]";
-				mes "But that's your own fault. Go back to Church.";
-				close;
-			}
-			if (ACO_Q2 == 3) {
-				mes "[Father Yosuke]";
-				mes "Hmm.";
-				mes "A Priest";
-				mes "trainee, eh? ";
-				mes "Welcome.";
+				mes "Not bad at all, you've made it all the way here from Prontera. So what's your name, kid?";
 				next;
 				mes "[Father Yosuke]";
-				mes "I won't say";
-				mes "anything more.";
-				mes "Just devote your";
-				mes "life to God.";
+				mes "" + strcharinfo(0) + ", huh? Why isn't your name on my list?";
 				next;
 				mes "[Father Yosuke]";
-				mes "Now go back to church.";
-				mes "Hereby, the first of";
-				mes "your trials is now";
-				mes "completed.";
-				savepoint "prt_fild00",206,230;
-				set ACO_Q2,4;
+				mes "You probably made a mistake. Go back to the Santuary, and check with the Bishop.";
 				close;
 			}
-			if (ACO_Q2 == 4) {
-				mes "[Father Yosuke]";
-				mes "I told you to go back to church.";
-				mes "Or do you want to live with me here for the rest of your life...?";
-				close;
-			}
-			mes "[Father Yosuke]";
-			mes "Just go be a Priest. This isn't a playground for kids.";
+		}
+		else {
+			mes "You...";
+			mes "Novice.";
+			mes "There something";
+			mes "you wanna tell me?";
 			close;
 		}
-		mes "[Father Yosuke]";
-		mes "...Acolyte, you don't have any business with me here.";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Father Yosuke]";
-		mes "Hey...";
-		next;
-		mes "[Father Yosuke]";
-		mes "If you like, come sit here with me and meditate the great truths. God's majesty is truly inspiring...";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_FatherYos";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Hey...";
+			next;
+			mes "[Father Yosuke]";
+			mes "If you like, come sit here with me and meditate the great truths. God's majesty is truly inspiring...";
+			close;
+		}
+		else {
+			mes "Do you have anything to say? Because unfortunately for you,";
+			mes "I don't any replies.";
+			close;
+		}
 	}
-	mes "[Father Yosuke]";
-	mes "Do you have anything to say? Because unfortunately for you,";
-	mes "I don't any replies.";
-	close;
-}
+}
+

+ 175 - 70
npc/pre-re/jobs/1-1/archer.txt

@@ -1,22 +1,36 @@
 //===== rAthena Script ======================================= 
-//= Renewal Archer Job Change
+//= Archer Job Quest
 //===== By: ================================================== 
-//= Kisuka
+//= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.9
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Job Change to Archer Class
+//= [Aegis Conversion]
+//= Job quest for Archer classes
 //===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
+//= Fully working
+//= v1.1 Added instant job change for High Novice [Lupus]
+//= v1.3 Added Baby Class support [Lupus]
+//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= 1.5 Now saves/restores all quest skills [Lupus]
+//= 1.6 Merged back JFunc [Lupus]
+//= 1.7 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	Arrow reward is now equal to the type sof trunks brought.
+//=	No longer uses function "F_ToHigh"
+//= 1.7a Fixed minor dialogue bug at Grade==25 [Lupus]
+//= 1.8 Fixed mistake in condition check. [L0ne_W0lf]
+//= 1.9 Added Quest Log commands. [L0ne_W0lf]
 //============================================================ 
-payon_in02,64,71,4	script	Archer Guildsman	85,{
+
+payon_in02,64,71,4	script	Archer Guildsman#archer	85,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Sniper || ADVJOB == Job_Clown || ADVJOB == Job_Gypsy)) {
+		if (Class == Job_Novice_High && (ADVJOB == Job_Sniper || ADVJOB == Job_Clown || ADVJOB == Job_Gypsy)) {
 			mes "[Archer Guildsman]";
 			mes "Hey, I know you.";
+			mes "You took this test";
+			mes "before, didn't you?";
 			next;
 			mes "[Archer Guildsman]";
 			mes "Ah, you must have been";
@@ -37,7 +51,7 @@ payon_in02,64,71,4	script	Archer Guildsman	85,{
 			mes "need to say anything else.";
 			mes "I know you'll make a great Archer...";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Archer_high;
 			skill 147,1,0;
 			skill 148,1,0;
@@ -46,96 +60,187 @@ payon_in02,64,71,4	script	Archer Guildsman	85,{
 			mes "reward for you this time, I hope you understand. Take care of yourself.";
 			close;
 		}
-		mes "[Archer Guildsman]";
-		mes "Oh...?";
-		mes "Hey, what are";
-		mes "you doing here...?";
-		next;
-		mes "[Archer Guildsman]";
-		mes "I can tell that you're not cut out to be an Archer. It sort of feels like you're meant to do";
-		mes "something else...";
-		close;
+		else {
+			mes "[Archer Guildsman]";
+			mes "Oh...?";
+			mes "Hey, what are";
+			mes "you doing here...?";
+			next;
+			mes "[Archer Guildsman]";
+			mes "I can tell that you're not cut out to be an Archer. It sort of feels like you're meant to do";
+			mes "something else...";
+			close;
+		}
 	}
 	mes "[Archer Guildsman]";
-	mes "Nice to meet you. How may I help you?";
+	mes "Good day. How may I help you?";
 	next;
-	switch (select("I want to be an Archer.:I need the requirements, please.:Nothing, thanks.")) {
+	switch(select("I want to be an Archer.:I need the requirements, please.:Nothing, thanks.")) {
 	case 1:
-		if (Class == Job_Baby || Class == Job_Novice) {
+		if (BaseJob == Job_Archer) {
+			mes "[Archer Guildsman]";
+			mes "You've already become an Archer...";
+			close;
+		}
+		else if (BaseJob != Job_Archer && BaseJob != Job_Novice) {
 			mes "[Archer Guildsman]";
-			mes "You are..." + strcharinfo(0) + " right?";
+			mes "Hmm...";
+			mes "You don't look much like a Novice at all...";
 			next;
-			if (getskilllv("NV_BASIC") < 9) {
+			mes "[Archer Guildsman]";
+			mes "Anyway, whatever you are, you can't choose a job as an Archer because you have a job already.";
+			close;
+		}
+		if (job_archer_q == 0) {
+			mes "[Archer Guildsman]";
+			mes "Do you want to be an Archer?";
+			mes "If so, you need to fill out this application form.";
+			next;
+			if (select("Apply.:Cancel") == 1) {
+				set job_archer_q,1;
+				setquest 1004;
 				mes "[Archer Guildsman]";
-				mes "Well, you don't have the right skill level. ";
-				mes "Your job level must be at least ^4d4dff10^000000";
-				mes "and your Basic Skill level should reach ^4d4dfflevel 9^000000";
+				mes "Okay, sign here. Alright, um, I'll promote you once you meet the requirements.";
 				next;
 				mes "[Archer Guildsman]";
-				mes "Because an Archer needs";
-				mes "extremely high concentration,";
-				mes "so we do not accept ";
-				mes "those who have little patience.";
-				close;
+				mes "If you think you've met them already, we can check that now.";
+				mes "Are you ready?";
+				next;
+				if (select("Yes, I am.:No, not yet.") == 1) {
+					mes "[Archer Guildsman]";
+					mes "Alright, let me check.";
+					next;
+				}
+				else {
+					mes "[Archer Guildsman]";
+					mes "I understand. Be my guest if you want to look at the requirements.";
+					close;
+				}
 			}
 			mes "[Archer Guildsman]";
-			mes "You seem to have learned the basic skills..";
-			mes "....Hm~~ you are now ready to become an Archer. I will take the step right away.";
-			next;
-			skill 143,0,1;
-			if(Class == Job_Baby){
-				jobchange Job_Baby_Archer;
-			} else {
-				jobchange Job_Archer;
-			}
+			mes "Well, alright.";
+			mes "See you next time.";
+			close;
+		}
+		mes "[Archer Guildsman]";
+		mes "Are you..." + strcharinfo(0) + "?";
+		next;
+		if (getskilllv("NV_BASIC") < 9) {
 			mes "[Archer Guildsman]";
-			mes "Congratulations! You are now an Archer! Also, we hope that you actively participate in many programs for the revival of the Archer Guild.";
-			mes "Ah, items have arrived from the Production Department. Here, take these! These are all yours!";
-			getitem 1742,1; //N_Composite_Bow
-			getitem 12004,1; //Arrow_Container
-			getitem 12009,1; //Silver_Arrow_Container
-			getitem 12008,1; //Fire_Arrow_Container
+			mes "Well, you're not at the right job level. Please check the requirements again.";
 			next;
 			mes "[Archer Guildsman]";
-			mes "Having a bow and arrows, now you've become a real Archer.";
-			mes "If you open the arrow quiver, there will be arrows in it that you can equip.";
-			mes "Well, I expect to hear good news from you. It's time to say goodbye. Bye.";
+			mes "Your job level must be at least 10, and don't forget you should learn all of the Basic Skills. Once you've done that, come back.";
 			close;
 		}
-		if (Class == Job_Baby_Archer || Class == Job_Archer || Class == Job_Archer_High) {
+		if (job_archer_q == 1) {
+			set .@archer_item1,countitem(1066) * 5;
+			set .@archer_item2,countitem(1067) * 3;
+			set .@archer_item3,countitem(1068) * 2;
+			set .@archer_item4,countitem(1019);
+			set .@total_archer,.@archer_item1 + .@archer_item2 + .@archer_item3 + .@archer_item4;
+			set .@total_archer2,(((.@archer_item2 + .@archer_item3) * 2) + .@archer_item4);
 			mes "[Archer Guildsman]";
-			mes "Haha, you are kidding me..";
-			close;
+			mes "Excellent!";
+			mes "Now then,";
+			mes "let's see...";
+			next;
+			mes "[Archer Guildsman]";
+			mes "I will appraise the value of the various types of Trunks, needed to produce a Bow, that you've brought.";
+			next;
+			if (countitem(1066) == 0 && countitem(1067) == 0 && countitem(1068) == 0 && countitem(1019) == 0) {
+				mes "[Archer Guildsman]";
+				mes "Um...";
+				mes "Unfortunately you didn't bring any of the required items. There's nothing for me to appraise.";
+				close;
+			}
+			mes "[Archer Guildsman]";
+			if (countitem(1066) != 0) mes " Grade S : " + countitem(1066) + " ea, Grade: " + .@archer_item1 + " . ";
+			if (countitem(1067) != 0) mes " Grade A : " + countitem(1067) + " ea, Grade : " + .@archer_item2 + " . ";
+			if (countitem(1068) != 0) mes " Grade B : " + countitem(1068) + " ea, Grade : " + .@archer_item3 + " . ";
+			if (countitem(1019) != 0) mes " Grade C : " + countitem(1019) + " ea, Grade : " + .@archer_item4 + " . ";
+			if (.@total_archer < 25) {
+				mes "Total Grades: ^FF0000" + .@total_archer + "^000000 / 40";
+				next;
+				mes "[Archer Guildsman]";
+				mes "Less than 25!? You have to get a grade of at least 25! Come on, try harder!";
+				close;
+			}
+			else {
+				mes "Total Grades: ^0000FF" + .@total_archer + "^000000 / 40";
+				next;
+				mes "[Archer Guildsman]";
+				if (.@total_archer > 40) {
+					mes "Wow! More than 40!";
+					mes "Excellent! Congratulations!";
+				}
+				else if (.@total_archer > 30) {
+					mes "More than 30! Nice job!";
+					mes "Congratulations!";
+				}
+				else {
+					mes "*Sigh* Well, you just barely passed... Anyway, well done.";
+				}
+			}
+			next;
+			mes "[Archer Guildsman]";
+			mes "I'll transfer these Trunks to our Bow Production Department. Now that you've met the requirements, let me promote you right away!";
+			if (countitem(1066) != 0) delitem 1066,countitem(1066); //Tree_Of_Archer_1
+			if (countitem(1067) != 0) delitem 1067,countitem(1067); //Tree_Of_Archer_2
+			if (countitem(1068) != 0) delitem 1068,countitem(1068); //Tree_Of_Archer_3
+			if (countitem(1019) != 0) delitem 1019,countitem(1019); //Wooden_Block
 		}
+		next;
+		callfunc "Job_Change",Job_Archer;
+		callfunc "F_ClearJobVar";
+		completequest 1004;
+		mes "[Archer Guildsman]";
+		mes "Congratulations!";
+		mes "You are now an Archer!";
+		next;
+		mes "[Archer Guildsman]";
+		mes "Of course, we expect that you will help contribute towards the future of the Archer Guild with your efforts.";
+		next;
+		mes "[Archer Guildsman]";
+		mes "Ah, your bow has arrived from the Bow Production Department. Here, take it! It's yours~";
+		getitem 1702,1; //Bow_
+		getitem 1750,.@total_archer2; //Arrow
+		next;
 		mes "[Archer Guildsman]";
-		mes "Wait a second. You've chosen a different job already. You don't need to know this~";
+		mes "Now, off you go. Hunt with pride, knowing you were trained by one of the best!";
 		close;
 	case 2:
 		mes "[Archer Guildsman]";
-		mes "An Archer has skills using a bow and has various talents.";
-		mes "The greatest ability of an Archer is attacking enemies from a long distance.";
+		mes "I will explain the requirements for being an Archer.";
+		if (BaseJob != Job_Novice) {
+			if (BaseJob == Job_Archer) {
+				next;
+				mes "[Archer Guildsman]";
+				mes "But...";
+				mes "You're already an Archer. You should know these already...";
+			}
+			else {
+				next;
+				mes "[Archer Guildsman]";
+				mes "Wait a second. You've chosen a different job already. You don't need to know this~";
+			}
+			mes "So...Yeah...no real reason to tell you the requirements...";
+		}
 		next;
 		mes "[Archer Guildsman]";
-		mes "Although an Archer has weaker HP,";
-		mes "he or she can shoot enemies";
-		mes "at a long range,";
-		mes "so an Archer is safer in a real battle.";
+		mes "First of all, you have to the Job Level 9 as a Novice, and know all of the Basic Skills.";
 		next;
 		mes "[Archer Guildsman]";
-		mes "Although an Archer in Ragnarok has lower HP,";
-		mes "he or she has high accuracy and attack rate";
-		mes "so that the archer can kill monsters";
-		mes "before they get close to an Archer.";
+		mes "An Archer needs extremely high concentration and reflexes, so we do not accept those who have little patience.";
 		next;
 		mes "[Archer Guildsman]";
-		mes "^8E2323An Archer can change";
-		mes "^8E2323jobs to a Hunter.";
-		mes "^8E2323Other than Hunter, if you are a man, you can change your job to Bard";
-		mes "^8E2323and if you are a woman, you can change your job to Dancer.^000000";
+		mes "You also have to gather ^FF0000Trunks^000000. There are 4 different types of Trunks, each of differing quality. You'll be given different grades for your Trunks, depending on their quality.";
+		next;
+		mes "[Archer Guildsman]";
+		mes "In order to become an Archer, you must receive a grade of at least ^0000FF25^000000 points out of 40. You can get Trunks from 'Willow,' the tree. Be careful, though. They can be tough monsters.";
 		close;
 	case 3:
-		mes "[Archer Guildsman]";
-		mes "If you have any questions, feel free to come and ask me.";
 		close;
 	}
-}
+}
+

+ 531 - 93
npc/pre-re/jobs/1-1/mage.txt

@@ -1,20 +1,32 @@
 //===== rAthena Script ======================================= 
-//= Renewal Mage Job Change
+//= Mage Job Quest
 //===== By: ================================================== 
-//= Kisuka
+//= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.9
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Job Change to Mage Class
+//= [Aegis Conversion]
+//= Job quest for Mage classes
 //===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
+//= Fully working
+//= 1.1 Fixed input ingridients bug [Lupus]
+//= v1.2 Added instant job change for High Novice [Lupus]
+//= 1.3 Added Baby Class support [Lupus]
+//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= 1.5 Now saves/restores all quest skills [Lupus]
+//= 1.6 Merged back JFunc, CHANGED NUMBERS TO CONSTANTS [Lupus]
+//= 1.7 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	No longer uses function "F_ToHigh"
+//= 1.7a Fixed a "If" in the quest. (bugreport:489) [Samuray22]
+//= 1.8 Added Quest Log commands. [L0ne_W0lf]
+//= 1.9 Fixed an issue with completequest by adding checkquest. [Kisuka]
 //============================================================ 
+
 geffen_in,164,124,4	script	Mage Guildsman	123,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_High_Wizard || ADVJOB == Job_Professor)) {
+		if (ADVJOB == Job_High_Wizard || ADVJOB == Job_Professor) {
 			if (Class == Job_Novice_High) {
 				mes "[Mage Guildsman]";
 				mes "Whoa, long time no see! But weren't you supposed to be dead?";
@@ -40,120 +52,547 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 				mes "Wow, for some reason, you look way better than you did before. Anyway, I believe you will do a better job being a Mage as well.";
 				close;
 			}
+			else {
+				mes "[Mage Guildsman]";
+				mes "Is there anything more I can help you with? If not, why don't you go test your skills? The world is waiting for you~!";
+				close;
+			}
+		}
+		else {
+			mes "[Mage Guildsman]";
+			mes "What, are you interested in the Mage guild? I didn't want to tell you this, but you don't belong here.";
+			next;
 			mes "[Mage Guildsman]";
-			mes "Is there anything more I can help you with? If not, why don't you go test your skills? The world is waiting for you~!";
+			mes "I am not sure why you're still standing in front of me, but I can tell that you're not meant to be a Mage.";
 			close;
 		}
-		mes "[Mage Guildsman]";
-		mes "What, are you interested in the Mage guild? I didn't want to tell you this, but you don't belong here.";
-		next;
-		mes "[Mage Guildsman]";
-		mes "I am not sure why you're still standing in front of me, but I can tell that you're not meant to be a Mage.";
-		close;
-	}
-	if (Class == Job_Baby_Mage || Class == Job_Mage) {
-		mes "[Mage Guildsman]";
-		mes "Hey, haven't you realized? You're aleady a Mage, silly!";
-		next;
-		mes "[Mage Guildsman]";
-		mes "One of these days you'll realize the power inside of you when you can make Fire with your mind!";
-		close;
-	}
-	if ((Class != Job_Baby_Mage) && (Class != Job_Mage) && (Class != Job_Novice)) {
-		mes "[Mage Guildsman]";
-		mes "Hey~ C'mon. Quit playing games. You can't be a Mage because you already have another Job.";
-		close;
 	}
-	if (Class == Job_Baby || Class == Job_Novice) {
+	mes "[Mage Guildsman]";
+	mes "Yo. What's up?";
+	next;
+	switch(select("I want to be a Mage.:Tell me the Requirements.:Pretty much nothing.")) {
+	case 1:
 		mes "[Mage Guildsman]";
-		mes "Hey?";
-		next;
-		switch (select("I want to be a Mage.:Tell me the Requirements.:Pretty much nothing.")) {
-		case 1:
-			mes "[Mage Guildsman]";
-			mes "Wanna be a Mage, eh?";
+		if (BaseJob == Job_Mage) {
+			mes "Hey, haven't you realized? You're aleady a Mage, silly!";
 			next;
 			mes "[Mage Guildsman]";
-			if (Sex == 1) {
+			mes "One of these days you'll realize the power inside of you when you can make Fire with your mind!";
+			close;
+		}
+		if (BaseJob != Job_Novice) {
+			mes "Hey~ C'mon. Quit playing games. You can't be a Mage because you already have another Job.";
+			close;
+		}
+		if (job_magician_q == 0) {
+			mes "Wanna be a Mage, eh...?";
+			if (sex)
 				mes "Hey, look at you! You're kinda cute~! Not my type though...";
-			}
 			else {
 				mes "Oooh, you're such a hot babe~!";
 				mes "I like girls like you~";
 			}
-			mes "Right, you said that you wanna be a Mage?";
 			next;
-			if (select("I want to be a Mage.:Pretty much nothing.") == 1) {
-				if (getskilllv("NV_BASIC") < 9) {
-					mes "[Mage Guildman]";
-					mes "Oh, what a bummer. You haven't met the requirements yet.";
-					next;
-					mes "[Mage Guildman]";
-					mes "Go back and reach Novice Job level 9 first. Don't forget that you also have to learn all of the Basic Skills before you come back.";
-					close;
-				}
-				mes "[Mage Guildsman]";
-				mes "Okay. Sign right there. Oh, you're very good at spelling.";
-				mes "So your name is... " + strcharinfo(0) + ".";
-				next;
+			mes "[Mage Guildsman]";
+			mes "Right, you said that you wanna be a Mage? Alright then, please sign the Mage Application.";
+			next;
+			if (select("Sign Up.:Quit.") == 1) {
 				mes "[Mage Guildsman]";
-				mes "Hmm I can see that you've worked very hard on your own.";
-				mes "Good! Always sticking to the basics is the best! I will transform you right away.";
+				mes "Okay. Sign right there. Oh, you're very good at spelling. Alright. So your name is... " + strcharinfo(0) + ".";
 				next;
 				mes "[Mage Guildsman]";
-				mes "*Ahem*";
-				mes "Congratulations!";
-				mes "You are now a Mage!";
-				next;
-				skill 143,0,1;
-				if(Class == Job_Baby){
-					jobchange Job_Baby_Mage;
-				} else {
-					jobchange Job_Mage;
+				mes "Now it's time for";
+				mes "me to give you the test.";
+				switch(rand(3)) {
+				case 1:
+					mes "Make me a ^3355FFMixed Solution No. 1^000000";
+					mes "and bring it back to me.";
+					set job_magician_q,1;
+					break;
+				case 2:
+					mes "Make me a ^3355FFMixed Solution No. 2^000000";
+					mes "and bring it back to me.";
+					set job_magician_q,2;
+					break;
+				case 3:
+					mes "Make me a ^3355FFMixed Solution No. 3^000000";
+					mes "and bring it back to me.";
+					set job_magician_q,3;
+					break;
+				default:
+					mes "Make me a ^3355FFMixed Solution No. 4^000000";
+					mes "and bring it back to me.";
+					set job_magician_q,4;
 				}
-				getitem 1639,1; //N_Rod
-				set Zeny, Zeny + 50;
+				next;
+				getitem 1092,1; //Empty_Cylinder
 				mes "[Mage Guildsman]";
-				mes "'Welcome to My World~'";
-				mes "Heh heh, I just wanted to say that. You know, it's a quote from a well-known movie~";
+				mes "You can find the neccessary ingredients inside the Guide Book in this Guild. So you better look up what you need before you go.";
 				next;
 				mes "[Mage Guildsman]";
-				mes "Now that you're a Mage just like us, let's be friends, okay?";
+				mes "Once you collect all the ingredients you, use the machine in the center of the room to mix the solution. Good luck!";
 				close;
 			}
 			mes "[Mage Guildsman]";
 			mes "Whaaaaat~?! Right after you tell me that you wanna become a Mage, you change your mind?! Be a bit more decisive!";
 			close;
-		case 2:
-			mes "[Mage Guildsman]";
-			mes "Wanna be a Mage, eh?";
-			if (Sex == 1) {
-				mes "For a cutie like you, I'd be happy to explain the requirements!";
-			}
-			else {
-				mes "I'd be happy to explain the requirements for a pretty girl like you!";
-			}
+		}
+		mes "Yeah? Ready...?";
+		if (getskilllv("NV_BASIC") < 9) {
+			mes "Oh, what a bummer. You haven't met the requirements yet.";
 			next;
 			mes "[Mage Guildsman]";
-			mes "First of all, you have to reach Novice Job Level 10 and learn all of the Basic Skills. ";
-			next;
+			mes "Go back and reach Novice Job level 9 first. Don't forget that you also have to learn all of the Basic Skills before you come back.";
+			close;
+		}
+		mes "" + strcharinfo(0) + "'s test was...";
+		if (job_magician_q == 1)
+			mes "Making Mixed Solution No. 1.";
+		else if (job_magician_q == 2)
+			mes "Making Mixed Solution No. 2.";
+		else if (job_magician_q == 3)
+			mes "Making Mixed Solution No. 3.";
+		else
+			mes "Making Mixed Solution No. 4.";
+		next;
+		mes "[Mage Guildsman]";
+		mes "Okay, let me";
+		mes "check if you made your";
+		mes "solution accurately...";
+		next;
+		mes "[Mage Guildsman]";
+		if (countitem(1071) == 0 && countitem(1085) == 0 && countitem(1086) == 0 && countitem(1087) == 0 && countitem(1090) == 0) {
+			mes "Hey, where's the Solution";
+			mes "I asked for...? I can't check it if you don't show it to me, right?";
+			close;
+		}
+		else {
+			if ((job_magician_q == 1 && countitem(1071) == 0) || (job_magician_q == 2 && countitem(1085) == 0) || (job_magician_q == 3 && countitem(1086) == 0) || (job_magician_q == 4 && countitem(1087) == 0)) {
+				mes "Wait.";
+				mes "This isn't the";
+				mes "Solution I asked for!";
+				next;
+				mes "[Mage Guildsman]";
+				if (job_magician_q == 1)
+					mes "You're supposed to make Mixed Solution No. 1 and bring it back to me. Now go and try it again.";
+				else if (job_magician_q == 2)
+					mes "You're supposed to make Mixed Solution No. 2 and bring it back to me. Now go and try it again.";
+				else if (job_magician_q == 3)
+					mes "You're supposed to make Mixed Solution No. 3 and bring it back to me. Now go and try it again.";
+				else
+					mes "You're supposed to make Mixed Solution No. 4 and bring it back to me. Now go and try it again.";
+
+				if (countitem(1071) != 0) delitem 1071,1; //Mage_Test_1
+				else if (countitem(1085) != 0) delitem 1085,1; //Mage_Test_2
+				else if (countitem(1086) != 0) delitem 1086,1; //Mage_Test_3
+				else if (countitem(1087) != 0) delitem 1087,1; //Mage_Test_4
+				else delitem 1090,1; //Mage_Test_Etc
+				close;
+			}
+		}
+		if (countitem(1071) != 0) delitem 1071,1; //Mage_Test_1
+		else if (countitem(1085) != 0) delitem 1085,1; //Mage_Test_2
+		else if (countitem(1086) != 0) delitem 1086,1; //Mage_Test_3
+		else if (countitem(1087) != 0) delitem 1087,1; //Mage_Test_4
+		else delitem 1090,1; //Mage_Test_Etc
+		mes "Hmm. I can see that you tried really hard. For a beginner's attempt, this is really good.";
+		mes "Great work!";
+		next;
+		mes "[Mage Guildsman]";
+		mes "Alright! I'm pleased to say that you've passed the Mage Test. I will transform you right away!";
+		next;
+		mes "[Mage Guildsman]";
+		mes "*Ahem*";
+		mes "Congratulations!";
+		mes "You are now a Mage!";
+		next;
+		callfunc "Job_Change",Job_Mage;
+		callfunc "F_ClearJobVar";
+		set Zeny,Zeny+50;
+		if(checkquest(1005) != -1) {
+			completequest 1005;
+		}
+		else if(checkquest(1006) != -1) {
+			completequest 1006;
+		}
+		else if(checkquest(1007) != -1) {
+			completequest 1007;
+		}
+		else {
+			completequest 1008;
+		}
+		mes "[Mage Guildsman]";
+		mes "'Welcome to My World~'";
+		mes "Heh heh, I just wanted to say that. You know, it's a quote from a well-known movie~";
+		next;
+		mes "[Mage Guildsman]";
+		mes "Now that you're a Mage just like us, let's be friends, okay?";
+		close;
+	case 2:
+		mes "[Mage Guildsman]";
+		mes "Wanna be a Mage, eh?";
+		if (sex)
+			mes "For a cutie like you, I'd be happy to explain the requirements!";
+		else
+			mes "I'd be happy to explain the requirements for a pretty girl like you!";
+		next;
+		mes "[Mage Guildsman]";
+		mes "First of all, you have to reach Novice Job Level 10 and learn all of the Basic Skills. Then, you'll have to pass the Mage Test.";
+		next;
+		if (job_magician_q != 0) {
 			mes "[Mage Guildsman]";
-			mes "In the past, there was a complicated potion mixing test. Because of that hard test, we slowly started to lose aplicants.";
-			mes "So, we decided to accept all aplicants who have the basic requirements.";
+			mes "Your test is to";
+			switch(job_magician_q) {
+			case 1:
+				mes "make me a";
+				mes "^3355FFMixed Solution No. 1^000000";
+				mes "and bring it back to me.";
+				setquest 1005;
+				break;
+			case 2:
+				mes "make me a";
+				mes "^3355FFMixed Solution No. 2^000000";
+				mes "and bring it back to me.";
+				setquest 1006;
+				break;
+			case 3:
+				mes "make me a";
+				mes "^3355FFMixed Solution No. 3^000000";
+				mes "and bring it back to me.";
+				setquest 1007;
+				break;
+			default:
+				mes "make me a";
+				mes "^3355FFMixed Solution No. 4^000000";
+				mes "and bring it back to me.";
+				setquest 1008;
+			}
 			next;
 			mes "[Mage Guildsman]";
-			mes "Let me know when you are ready to become a Mage, alright?";
-			close;
-		case 3:
+			mes "You can look up the ingredients you'll need to make the Solution inside the Guide Book in this Guild.";
+		}
+		else {
 			mes "[Mage Guildsman]";
-			mes "Nothing...?";
-			close;
+			mes "You will be informed as to which Mixed Solution you will need to create after signing the application form.";
 		}
+		next;
+		mes "[Mage Guildsman]";
+		mes "Let me know when you are ready to become a Mage, alright?";
+		close;
+	case 3:
+		mes "[Mage Guildsman]";
+		mes "Nothing...?";
+		close;
 	}
 }
 
-geffen_in,164,112,4	script	Mixing machine	111,{
-	mes "- Out of Order !! -";
+geffen_in,164,112,4	script	Mixing Machine	111,{
+	mes "[Mixing Machine]";
+	mes "This machine is the property of the Geffen Mage Guild and is used only for mixing solutions for magic purposes.";
+	next;
+	if (select("Use Machine.:Cancel.") == 1) {
+		mes "[Mixing Machine]";
+		mes "Choose the";
+		mes "Solvent for";
+		mes "the Solution.";
+		next;
+		switch(select("Payon Solution.:Morroc Solution.:No Solvent.")) {
+		case 1:
+			if (countitem(1089) == 0) {
+				mes "[Mixing Machine]";
+				mes "Error.";
+				mes "Cannot find the item.";
+				mes "Please check again.";
+				mes "Process Halting.";
+				close;
+			}
+			set .@mixitem2,1;
+			break;
+		case 2:
+			if (countitem(1088) == 0) {
+				mes "[Mixing Machine]";
+				mes "Error.";
+				mes "Cannot find the item.";
+				mes "Please check again.";
+				mes "Process Halting.";
+				close;
+			}
+			set .@mixitem2,2;
+			break;
+		case 3:
+			set .@mixitem2,0;
+			break;
+		}
+		while (1) {
+			if (.@progress == 2) {
+				mes "[Mixing Machine]";
+				if (.@mixitem1_1 != 0) mes "Jellopy: " + .@mixitem1_1 + " ea.";
+				if (.@mixitem1_2 != 0) mes "Fluff: " + .@mixitem1_2 + " ea.";
+				if (.@mixitem1_3 != 0) mes "Milk: " + .@mixitem1_3 + " ea.";
+				if (.@mixitem2 == 0) mes "Solvent: None.";
+				if (.@mixitem2 == 1) mes "Solvent: Payon Solution.";
+				if (.@mixitem2 == 2) mes "Solvent: Morroc Solution.";
+				next;
+				mes "[Mixing Machine]";
+				mes "Please choose if you wish to begin mixing, or to re-enter the number of items to be mixed.";
+				next;
+				switch(select("Begin Mixing.:Re-Enter Number of Items.:Reset.")) {
+				case 1:
+					mes "[Mixing Machine]";
+					mes "Please place the items into the Mixing Receptacle. Make sure the item amounts are correct.";
+					next;
+					mes "[Mixing Machine]";
+					mes "You cannot adjust or restore items once they are placed into the Mixing Receptacle.";
+					next;
+					mes "[Mixing Machine]";
+					mes "If everything is correct, press the 'Mix' button when you are ready. Otherwise, press the 'Cancel' button.";
+					next;
+					if (select("Press 'Mix' Button.:Press 'Cancel' Button.") == 1) {
+						mes "[Mixing Machine]";
+						mes "Place items into the Mixing Receptacle now. Please wait.";
+						next;
+						mes "[Mixing Machine]";
+						if (countitem(909) < .@mixitem1_1) {
+							mes "Insufficient Jellopy.";
+							mes "Please Check again.";
+							mes "Process Halted.";
+							close;
+						}
+						else if (countitem(914) < .@mixitem1_2) {
+							mes "Insufficient Fluff.";
+							mes "Please Check again.";
+							mes "Process Halted.";
+							close;
+						}
+						else if (countitem(519) < .@mixitem1_3) {
+							mes "Insufficient Milk.";
+							mes "Please Check again.";
+							mes "Process Halted.";
+							close;
+						}
+						else if (.@mixitem2 == 1 || .@mixitem2 == 2) {
+							if (countitem(1089) == 0 && countitem(1088) == 0) {
+								mes "Solution not found.";
+								mes "Please Check again.";
+								mes "Process Halted.";
+								close;
+							}
+						}
+						if (.@mixitem1_1 != 0) delitem 909,.@mixitem1_1; //Jellopy
+						if (.@mixitem1_2 != 0) delitem 914,.@mixitem1_2; //Fluff
+						if (.@mixitem1_3 != 0) delitem 519,.@mixitem1_3; //Milk
+						if (.@mixitem2 == 1) delitem 1089,1; //Payon_Potion
+						if (.@mixitem2 == 2) delitem 1088,1; //Morocc_Potion
+						mes "Items are Ready.";
+						mes "Close the Lid.";
+						set .@progress,3;
+						next;
+					}
+					break;
+				case 2:
+					set .@continue,0;
+					next;
+					break;
+				case 3:
+					set .@mixitem1_1,0;
+					set .@mixitem1_2,0;
+					set .@mixitem1_3,0;
+					set .@progress,0;
+					set .@continue,0;
+					mes "[Mixing Machine]";
+					mes "Reset Complete.";
+					mes "Initiate again?";
+					next;
+					if (select("Yes.:No.") == 1)
+						break;
+					mes "[Mixing Machine]";
+					mes "Process Halted.";
+					mes "Thank you.";
+					close;
+				}
+				if (.@progress == 3) break;
+			}
+			else if (.@progress == 1) {
+				mes "[Mixing Machine]";
+				mes "Nothing found.";
+				next;
+			}
+			mes "[Mixing Machine]";
+			mes "Select items to mix.";
+			while(1) {
+				switch(select("Jellopy.:Fluff.:Milk.:Ready to Mix.")) {
+				case 1:
+					while(1) {
+						input .@input;
+						if (.@input > 10000) {
+							next;
+							mes "[Mixing Machine]";
+							mes "Error: Item limit exceeded. Please enter values less than 10,000 try again.";
+							next;
+						}
+						else {
+							if (countitem(909) > 0) set .@mixitem1_1,.@mixitem1_1 + .@input;
+							set .@progress,2;
+							break;
+						}
+					}
+					break;
+				case 2:
+					while(1) {
+						input .@input;
+						if (.@input > 10000) {
+							next;
+							mes "[Mixing Machine]";
+							mes "Error: Item limit exceeded. Please enter values less than 10,000 try again.";
+							next;
+						}
+						else {
+							if (countitem(914) > 0) set .@mixitem1_2,.@mixitem1_2 + .@input;
+							set .@progress,2;
+							break;
+						}
+					}
+					break;
+				case 3:
+					while(1) {
+						input .@input;
+						if (.@input > 10000) {
+							next;
+							mes "[Mixing Machine]";
+							mes "Error: Item limit exceeded. Please enter values less than 10,000 try again.";
+							next;
+						}
+						else {
+						if (countitem(519) > 0) set .@mixitem1_3,.@mixitem1_3 + .@input;
+							set .@progress,2;
+							break;
+						}
+					}
+					break;
+
+				case 4:
+					if (.@progress != 2)
+						set .@progress,1;
+					set .@continue,1;
+					next;
+				}
+				if (.@continue) break;
+			}
+		}
+		mes "[Mixing Machine]";
+		mes "Please enter the ";
+		mes "Serial Number of";
+		mes "the Magic Powder.";
+		next;
+		while(1) {
+			input .@input;
+			if (.@input < 1000 || .@input > 9999) {
+				mes "[Mixing Machine]";
+				if (.@input == 0) {
+					mes "Do you want to skip this Menu?";
+					next;
+					if (select("Yes.:No.") == 1) {
+						break;
+					}
+				}
+				else {
+					mes "Invalid Serial Number.";
+					mes "Please try again.";
+					next;
+				}
+			}
+			else {
+				mes "[Mixing Machine]";
+				mes "The Serial Number is #" + .@input + ", correct?";
+				next;
+				if (select("Confirm.:Cancel.") == 1) {
+					if (.@input == 8472)
+						set .@magic_powder,1;
+					else if (.@input == 3735)
+						set .@magic_powder,2;
+					else if (.@input == 2750)
+						set .@magic_powder,3;
+					else if (.@input == 5429)
+						set .@magic_powder,4;
+					else
+						set .@magic_powder,5;
+				}
+				break;
+			}
+		}
+		mes "[Mixing Machine]";
+		mes "Choose a";
+		mes "Catalyst Stone.";
+		next;
+		switch(select("Yellow Gemstone.:Red Gemstone.:Blue Gemstone.:1carat Diamond.:Skip.")) {
+		case 1: set .@mixitem3,1; break;
+		case 2: set .@mixitem3,2; break;
+		case 3: set .@mixitem3,3; break;
+		case 4: set .@mixitem3,4; break;
+		case 5: break;
+		}
+		mes "[Mixing Machine]";
+		mes "All Set.";
+		mes "Initiating";
+		mes "Mixing process.";
+		mes "Please Wait.";
+		next;
+		mes "[Mixing Machine]";
+		mes "- Proverb of the Day -";
+		switch(rand(1,5)) {
+		case 1:
+			mes "An Eye for an Eye: When you take from a person, you must replace or repay in some way.";
+			break;
+		case 2:
+			mes "Credibility is a Man's Currency: There's a value in genuine trust that cannot be measured.";
+			break;
+		case 3:
+			mes "What Goes Around Comes Around: Ultimately, you will be treated in the way you treat others.";
+			mes "It means 'When you harm Another you will be harmed by him in an unavoidable situation'.";
+			break;
+		case 4:
+			mes "A good neighbor is better than a distant brother: When you need help, you can count on those close to you.";
+			break;
+		default:
+			mes "Birds of a Feather Flock Together: You can look at a person's friends as an indicator of their character.";
+		}
+		next;
+		if (.@mixitem1_1 == 2 && .@mixitem1_2 == 3 && .@mixitem1_3 == 1 && .@mixitem2 == 1 && .@mixitem3 == 1 && .@magic_powder == 1) {
+			mes "[Mixing Machine]";
+			mes "Mage Test Solution No. 1.";
+			getitem 1071,1; //Mage_Test_1
+			next;
+		}
+		else if (.@mixitem1_1 == 3 && .@mixitem1_2 == 1 && .@mixitem1_3 == 1 && .@mixitem2 == 0 && .@mixitem3 == 2 && .@magic_powder == 2) {
+			mes "[Mixing Machine]";
+			mes "Mage Test Solution No. 2.";
+			getitem 1085,1; //Mage_Test_2
+			next;
+		}
+		else if (.@mixitem1_1 == 6 && .@mixitem1_2 == 1 && .@mixitem1_3 == 0 && .@mixitem2 == 1 && .@mixitem3 == 3 && .@magic_powder == 3) {
+			mes "[Mixing Machine]";
+			mes "Mage Test Solution No. 3.";
+			getitem 1086,1; //Mage_Test_3
+			next;
+		}
+		else if (.@mixitem1_1 == 2 && .@mixitem1_2 == 3 && .@mixitem1_3 == 0 && .@mixitem2 == 2 && .@mixitem3 == 4 && .@magic_powder == 4) {
+			mes "[Mixing Machine]";
+			mes "Mage Test Solution No. 4.";
+			getitem 1087,1; //Mage_Test_4
+			next;
+		}
+		else {
+			mes "[Mixing Machine]";
+			mes "Unexpected";
+			mes "Error Occurred.";
+			getitem 1090,1; //Mage_Test_Etc
+			next;
+		}
+		mes "[Mixing Machine]";
+		mes "Mixing Complete.";
+		mes "Thank you.";
+		close;
+	}
 	close;
 }
 
@@ -172,9 +611,8 @@ pay_arche,122,100,0	script	Dollshoi	88,{
 			close;
 		}
 		delitem 1092,1; //Empty_Cylinder
-		set Zeny, Zeny - 50;
+		set zeny,zeny-50;
 		getitem 1089,1; //Payon_Potion
-		close;
 	}
 	close;
 }
@@ -185,7 +623,7 @@ moc_ruins,91,150,0	script	Ponka-Hontas	93,{
 	next;
 	if (select("Alright, Deal.:Nah, forget it.") == 1) {
 		mes "[Mage Guildsman]";
-		if (Zeny < 50) {
+		if (zeny < 50) {
 			mes "I'm sorry, but you don't have enough money to cover the 50 Zeny fee.";
 			close;
 		}
@@ -194,9 +632,8 @@ moc_ruins,91,150,0	script	Ponka-Hontas	93,{
 			close;
 		}
 		delitem 1092,1; //Empty_Cylinder
-		set Zeny, Zeny - 50;
+		set zeny,zeny-50;
 		getitem 1088,1; //Morocc_Potion
-		close;
 	}
 	close;
 }
@@ -205,7 +642,7 @@ geffen_in,177,112,4	script	Bookshelf	111,{
 	mes "[Guide Book]";
 	mes "This Guide Book is the property of the Geffen Mage Association. Please handle with care.";
 	next;
-	switch (select("Solution No. 1.:Solution No. 2.:Solution No. 3.:Solution No. 4.:Close.")) {
+	switch(select("Solution No. 1.:Solution No. 2.:Solution No. 3.:Solution No. 4.:Close.")) {
 	case 1:
 		mes "[Mage Test Solution No. 1]";
 		mes "* Ingredients List *";
@@ -295,4 +732,5 @@ geffen_in,177,112,4	script	Bookshelf	111,{
 		mes "Mixing Machine)";
 		close;
 	}
-}
+	close;
+}

+ 1087 - 129
npc/pre-re/jobs/1-1/merchant.txt

@@ -1,20 +1,38 @@
 //===== rAthena Script ======================================= 
-//= Renewal Merchant Job Change
+//= Merchant Job Quest
 //===== By: ================================================== 
-//= Kisuka
+//= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.1
+//= 2.3
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Job Change to Merchant Class
+//= [Aegis Conversion]
+//= Job quest for Merchant classes
 //===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
+//= Fully working
+//= v1.1 Added instant job change for High Novice [Lupus]
+//= v1.3 Added Baby Class support [Lupus]
+//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= 1.5 Changed Prontera->Izlude teleport price to 600 [Lupus]
+//= 1.5.1 Removed Duplicates [Silent]
+//= 1.5.2 Now saves/restores all quest skills [Lupus]
+//= 1.6 Merged back JFunc, CHANGED NUMBERS TO CONSTANTS [Lupus]
+//= 1.7 Updated to use Free Ticket for Kafra [Lupus]
+//= 1.8 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	No longer uses function "F_ToHigh"
+//= 1.9 Bugfixes, thanks to Barron-Monster. [L0ne_W0lf]
+//= 1.9a Added a missing next; (Barron-Monster) [L0ne_W0lf]
+//= 1.9b Typo. "nextl" -> "next;" (Barron-Monster) [L0ne_W0lf]
+//= 2.0 Should "fix" the problem with the Biliban Kafra. [L0ne_W0lf]
+//= 2.1 Fixed mistake in condition check. [L0ne_W0lf]
+//= 2.2 Added Quest Log commands. [L0ne_W0lf]
+//= 2.3 Fixed an issue with completequest by adding checkquest. [Kisuka]
 //============================================================ 
+
 alberta_in,53,43,6	script	Merchant#mer	86,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Whitesmith || ADVJOB == Job_Creator)) {
+		if (Class == Job_Novice_High && (ADVJOB == Job_Whitesmith || ADVJOB == Job_Creator)) {
 			mes "[Chief Mahnsoo]";
 			mes "Long time no see!";
 			mes "Hey, you didn't quit";
@@ -37,7 +55,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "[Chief Mahnsoo]";
 			mes "I guess it's destiny that we meet like this once more. Alright. Once again, let me change you into a Merchant!";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Merchant_High;
 			skill 153,1,0;
 			skill 154,1,0;
@@ -46,69 +64,28 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "Ah~ How nostalgic. Just like old times! Alright, do your best!";
 			close;
 		}
-		mes "[Chief Mahnsoo]";
-		mes "^333333*Sigh*^000000";
-		mes "I'm so bored...";
-		mes "When will I hear from my lovely Blossom?";
-		close;
-	}
-	mes "[Chief Mahnsoo]";
-	mes "So, what brings you to";
-	mes "the Merchant Association?";
-	mes "Is there anything";
-	mes "I can help you with?";
-	next;
-	switch (select("I want to be a Merchant.:Tell me about Merchants.:Tell me the requirements.:Nope.")) {
-	case 1:
-		if (Class == Job_Baby || Class == Job_Novice) {
-			mes "[Guildsman Mahnsoo]";
-			mes "Want to be a merchant? Hmm...";
-			next;
-			if (getskilllv("NV_BASIC") < 9) {
-				mes "[Guildsman Mahnsoo]";
-				mes "But if you want to be a merchant, your basic skill level must reach Level 9 or you must spend all of your skill points.";
-				next;
-				mes "[Guildsman Mahnsoo]";
-				mes "Don't you think we need to learn some basic skills although we just deal with money?";
-				close;
-			}
-			mes "[Guildsman Mahnsoo]";
-			mes "Good, I think you're fully ready for it seeing that your basic skill level is fulfilled.";
-			mes "Now I allow you to be a merchant.";
-			next;
-			mes "[Guildsman Mahnsoo]";
-			mes "Congratulations on becoming a merchant!";
-			next;
-			skill 143,0,1;
-			if(Class == Job_Baby){
-				jobchange Job_Baby_Merchant;
-			} else {
-				jobchange Job_Merchant;
-			}
-			set MERCNT_Q,0;
-			set MERCNT_Q2,0;
-			getitem 1381,1; //N_Battle_Axe
-			mes "[Guildsman Mahnsoo]";
-			mes "Congratulations again for being a member of the merchant guild and one of our colleagues. I expect your active participation from now on!";
-			next;
-			mes "[Guildsman Mahnsoo]";
-			mes "Absolutely, we need young people who have passion to achieve our great goal for securing 20% of the worldwide currency volume. You get it? Huh? ";
-			mes "Well, I'm just saying... It means let's make lots of money in the end. You guys know that~";
-			close;
-		}
-		if (Class == Job_Baby_Merchant || Class == Job_Merchant || Class == Job_Merchant_High) {
+		else {
 			mes "[Chief Mahnsoo]";
-			mes "Hello there!";
-			mes "How do you like";
-			mes "being a Merchant?";
-			next;
-			mes "[Chief Mahnsoo]";
-			mes "Having a way with";
-			mes "money certainly";
-			mes "has its perks,";
-			mes "does it not?";
+			mes "^333333*Sigh*^000000";
+			mes "I'm so bored...";
+			mes "When will I hear from my lovely Blossom?";
 			close;
 		}
+	}
+	if (BaseJob == Job_Merchant) {
+		mes "[Chief Mahnsoo]";
+		mes "Hello there!";
+		mes "How do you like";
+		mes "being a Merchant?";
+		next;
+		mes "[Chief Mahnsoo]";
+		mes "Having a way with";
+		mes "money certainly";
+		mes "has its perks,";
+		mes "does it not?";
+		close;
+	}
+	else if (BaseJob != Job_Merchant && BaseJob != Job_Novice) {
 		mes "[Chief Mahnsoo]";
 		mes "We Merchants hate people who are two faced. It's bad for business.";
 		next;
@@ -118,97 +95,1078 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 		mes "[Chief Mahnsoo]";
 		mes "Well, in any case, we only accept Novices for job changes to the Merchant class. But I appreciate your interest in what we do.";
 		close;
-	case 2:
+	}
+	else if (job_merchant_q == 9) {
 		mes "[Chief Mahnsoo]";
-		mes "Merchant?";
-		mes "Well, we basically sell goods to make money. That is the way";
-		mes "of the Merchant.";
+		mes "Hello there,";
+		mes ""+ strcharinfo(0) +".";
+		set job_merchant_q,0;
+		set job_merchant_q2,0;
+		set quest_alb_01,0;
+		mes "Unfortunately, you failed to earn your Merchant License this time.";
 		next;
 		mes "[Chief Mahnsoo]";
-		mes "I guess we may not be the best at fighting, and we don't have many special attacks. We've got no healing skills...";
-		next;
+		mes "I'll erase your records, so come back anytime when you want to reapply.";
+		close;
+	}
+	else if (job_merchant_q == 8 || job_merchant_q == 7) {
 		mes "[Chief Mahnsoo]";
-		mes "But we can buy goods at lower prices from NPC shops and sell them at a higher price to other people~";
+		mes "Hello there,";
+		mes ""+ strcharinfo(0) +".";
+		mes "I'm pleased to tell you";
+		mes "that I have good news!";
 		next;
 		mes "[Chief Mahnsoo]";
-		mes "Our ultimate attack skill is 'Mammonite.' The strength of Mammonite comes from the anger";
-		mes "when we're forced to throw away perfectly good zeny.";
+		mes "The Merchant Guild accepted your application. You've proven that you are fully qualified to become a Merchant.";
+		if (job_merchant_q == 7) {
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "The only thing to take care of is your Membership Fee.";
+			mes "Are you ready?";
+			next;
+			switch(select("Pay the rest of the 500 Zeny:Quit")) {
+			case 1:
+				mes "[Chief Mahnsoo]";
+				if (Zeny < 500) {
+					mes "Hmmm...";
+					mes "I suppose you currently don't have enough zeny to pay the rest of your Membership fee right now.";
+					next;
+					mes "[Chief Mahnsoo]";
+					mes "Please return when you have earned the 500 zeny that you need to become a Merchant.";
+					close;
+				}
+				set zeny,zeny-500;
+				mes "Ah yes...!";
+				mes "Now your";
+				mes "membership";
+				mes "is paid in full.";
+				break;
+			case 2:
+				mes "[Chief Mahnsoo]";
+				mes "I suppose you need some time to gather some zeny to pay your membership fee. Please come";
+				mes "back as soon as you're ready.";
+				close;
+			}
+		}
 		next;
 		mes "[Chief Mahnsoo]";
-		mes "Throwing away zeny like that";
-		mes "causes a deadly rage to well up in the heart of any Merchant!";
-		mes "Just thinking about it";
-		mes "makes my blood boil!";
+		mes "Congratulations!";
+		callfunc "Job_Change",Job_Merchant;
+		callfunc "F_ClearJobVar";
+		if(checkquest(1009) != -1) {
+			completequest 1009;
+		}
+		else if(checkquest(1010) != -1) {
+			completequest 1010;
+		}
+		else if(checkquest(1011) != -1) {
+			completequest 1011;
+		}
+		else {
+			completequest 1012;
+		}
+		mes "I'm very pleased that you are joining the Merchant Guild and hope that you will play an active part in Rune-Midgarts' economy.";
+		next;
+		if (quest_alb_01 == 1) {
+			mes "[Chief Mahnsoo]";
+			mes "*Ahem* Aaaaand let me give you a little bit of money for delivering that message to Blossom for me.";
+			mes "I hope you'll help me again next time~";
+			set zeny,zeny+200;
+			set quest_alb_01,2;
+		}
+		else {
+			mes "[Chief Mahnsoo]";
+			mes "The message you were supposed to deliver as per my request? You've forgotten about that? Oh well. Good work!";
+		}
 		next;
 		mes "[Chief Mahnsoo]";
-		mes "Anyway, we can use most";
-		mes "weapons except Bows, Rods, and Two-Handed Swords. But we can always sell those.";
+		mes "Our goal is to control 20 % of the world's income! We're going to need young, eager people like you!";
 		next;
 		mes "[Chief Mahnsoo]";
-		mes "Yes...";
-		mes "We Merchants generally";
-		mes "have money on our minds...";
+		mes "But overall, we'll also be happy just to make loads of money.";
+		mes "But we all know that~";
 		close;
-	case 3:
-		mes "[Guildsman Mahnsoo]";
-		mes "To become a Merchant,";
-		mes "although just selling and receiving money is our job,";
-		mes "you will need to learn all Basic Skills.";
+	}
+	else if (job_merchant_q <= 6 && job_merchant_q != 0) {
+		mes "[Chief Mahnsoo]";
+		if (job_merchant_q2 == 1 || job_merchant_q2 == 2) {
+			mes "First, get the delivery package from the storehouse, and then take it to the former Swordman's Association in Prontera.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "When you get there, give the package to the Kafra Employee stationed near there. Her name is Blossom. Did you get all that?";
+			next;
+			if (job_merchant_q2 == 1) {
+				mes "[Chief Mahnsoo]";
+				mes "Remember, the Serial Number of the package is ^3355FF2485741^000000.";
+				setquest 1009;
+			}
+			else {
+				mes "[Chief Mahnsoo]";
+				mes "Remember, the Serial Number of the package is ^3355FF2328137^000000.";
+				setquest 1009;
+			}
+		}
+		else if (job_merchant_q2 == 3 || job_merchant_q2 == 4) {
+			mes "First, get the delivery package from the storehouse, and then take it to the Mage Guild in Geffen.";
+			next;
+			if (job_merchant_q2 == 3) {
+				mes "[Chief Mahnsoo]";
+				mes "When you get there, give the package to the Mage Guildsman in charge. Remember, the packages Serial Number is ^3355FF2989396^000000.";
+				setquest 1010;
+			}
+			else {
+				mes "[Chief Mahnsoo]";
+				mes "When you get there, give the package to the Mage Guildsman in charge. Remember, the packages Serial Number is ^3355FF2191737^000000.";
+				setquest 1010;
+			}
+		}
+		else if (job_merchant_q2 == 5 || job_merchant_q2 == 6) {
+			mes "First, get the delivery package from the storehouse, and then take it to Morroc.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "You'll have to find Java Dullihan, the Dyemaker, so that you can deliver the product he ordered.";
+			next;
+			if (job_merchant_q2 == 5) {
+				mes "[Chief Mahnsoo]";
+				mes "But he's a little forgetful, so give it to one of his students. Remember, the package's Serial Number is ^3355FF3012685^000000.";
+				setquest 1011;
+			}
+			else {
+				mes "[Chief Mahnsoo]";
+				mes "But he's a little forgetful, give it to one of his students. Remember, the package's Serial Number is ^3355FF3487372^000000.";
+				setquest 1011;
+			}
+		}
+		else if (job_merchant_q2 == 7 || job_merchant_q2 == 8) {
+			mes "First, get the package from the storehouse, and then give it to the Kafra Employee stationed on Byalan Island. Her name is Blossom.";
+			next;
+			if (job_merchant_q2 == 7) {
+				mes "[Chief Mahnsoo]";
+				mes "Remember, the package's Serial Number is ^3355FF3318702^000000.";
+				setquest 1012;
+			}
+			else {
+				mes "[Chief Mahnsoo]";
+				mes "Remember, the package's Serial Number is ^3355FF3543625^000000.";
+				setquest 1012;
+			}
+		}
+		if (job_merchant_q2 == 7 || job_merchant_q2 == 8) {
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Aaaannnnd...";
+			mes "Don't forget to deliver that message for me~";
+		}
 		next;
-		mes "[Guildsman Mahnsoo]";
-		mes "Well, we used to receive a Membership Fee. But was it so hard to make that money?";
-		mes "There were too many people who couldn't gather that money and kept crying.";
+		mes "[Chief Mahnsoo]";
+		mes "Don't forget your destination and the package's Serial Number.";
+		mes "You'll need to tell them";
+		mes "to the storekeeper.";
 		next;
-		mes "[Guildsman Mahnsoo]";
-		mes "So recently, we decided to allow any Novice who wants to be a Merchant become one.";
-		mes "Because staying alive or not, it all rests on your own ability.";
-		close;
-	case 4:
+		mes "[Chief Mahnsoo]";
+		mes "The storehouse is in the room";
+		mes "to my right. There, you can talk";
+		mes "to the storekeeper, and he'll";
+		mes "help you out.";
+		next;
+		mes "[Chief Mahnsoo]";
+		mes "After you make the delivery, return to the storehouse and give the receipt to the storekeeper.";
+		mes "Then, come back";
+		mes "and see me.";
+		next;
+		mes "[Chief Mahnsoo]";
+		mes "Is that clear?";
+		mes "Alright, that's";
+		mes "the spirit.";
+		mes "Take care!";
 		close;
 	}
+	else if (job_merchant_q == 0) {
+		mes "[Chief Mahnsoo]";
+		mes "So, what brings you to";
+		mes "the Merchant Association?";
+		mes "Is there anything";
+		mes "I can help you with?";
+		next;
+		switch(select("I want to be a Merchant.:Tell me about Merchants.:Tell me the requirements.:Nope.")) {
+		case 1:
+			mes "[Chief Mahnsoo]";
+			mes "Do you want to";
+			mes "be a Merchant?";
+			mes "Well...";
+			next;
+			if (getskilllv("NV_BASIC") < 9) {
+				mes "[Chief Mahnsoo]";
+				mes "First, you have to be a Novice with Job Level 10. Once you do that, make sure you learn all of the Basic Skills.";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "We're not just";
+				mes "simple money makers!";
+				mes "We pride ourselves on having standards and only accepting qualified applicants!";
+				close;
+			}
+			mes "[Chief Mahnsoo]";
+			mes "Alright, you'll need to fill out this application and prepare 1,000 Zeny for your Membership Fee.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Oh...!";
+			mes "If you don't have all the money,";
+			mes "I can just take 500 Zeny now.";
+			mes "You can pay the rest after you";
+			mes "pass the test and earn your";
+			mes "Merchant Guild License.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "So what do you think?";
+			mes "Are you ready to join now?";
+			next;
+			if (select("Yes, I will.:Ummm, maybe later...") ==1 ) {
+				mes "[Chief Mahnsoo]";
+				mes "Let me check if you";
+				mes "filled out everything";
+				mes "on your application form...";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "Hmm... ";
+				mes "" + strcharinfo(0) + "...";
+				mes "That's a nice name.";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "This application will";
+				mes "only be registered once";
+				mes "the Membership Fee is paid.";
+				mes "How do you wish to";
+				mes "handle the fee?";
+				next;
+				switch(select("Pay all 1,000 Zeny now!:Two payments of 500 Zeny.:Quit")) {
+				case 1:
+					mes "[Chief Mahnsoo]";
+					if (Zeny >= 1000) {
+						set job_merchant_q,2;
+						set zeny,zeny-1000;
+						mes "Alright~";
+						mes "That's 1,000 zeny.";
+						mes "Excellent, excellent.";
+					}
+					else {
+						mes "It seems don't have enough zeny to pay all of the fee right now. Why don't you just pay 500 zeny now? Think about it.";
+						close;
+					}
+					break;
+				case 2:
+					mes "[Chief Mahnsoo]";
+					if (Zeny >= 500) {
+						set job_merchant_q,1;
+						set zeny,zeny-500;
+						mes "Let's see...";
+						mes "That's 500 Zeny. Although I don't think splitting payment is a good idea for any Merchant, it's alright since you're still learning.";
+					}
+					else {
+						mes "Hmm...";
+						mes "It seems you don't have the funds to pay half of the membership fee. Please come back once you collect the zeny that you need.";
+						close;
+					}
+					break;
+				case 3:
+					mes "[Chief Mahnsoo]";
+					mes "Feel free to return anytime";
+					mes "when you are ready, alright?";
+					close;
+				}
+			}
+			else {
+				mes "[Chief Mahnsoo]";
+				mes "You don't have enough zeny now? That's no problem. Take your time and come back when you're";
+				mes "ready, okay?";
+				close;
+			}
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Alright, you're now on the list of applicants. Ah, before I get started let me say just one thing.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "There are some dumb and greedy people out there who do not know what it means to be a Merchant.";
+			mes "I hope you won't turn out to be like them, will you?";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Now, let me";
+			mes "explain what you";
+			mes "need to do for the";
+			mes "Merchant License Test.";
+			next;
+			mes "[Chief Mahnsoo]";
+			switch(rand(1,4)) {
+			case 1:
+				mes "First, get the delivery package from the storehouse, then go to the former Swordman's Association in Prontera.";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "When you get there, visit the Kafra Employee stationed there. Her name is Blossom. Did you get";
+				mes "all of that?";
+				callsub S_GiveSerial,2485741,1,2328137,2;
+				break;
+			case 2:
+				mes "First, get the delivery package from the storehouse, and then go to the Mage Guild in Geffen. When you get there, visit the Mage Guildsman in charge.";
+				callsub S_GiveSerial,2989396,3,2191737,4;
+				break;
+			case 3:
+				mes "First, get the delivery package from the storehouse, and then go to Morroc. There you must find Java Dullihan, the dyemaker.";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "He's a bit forgetful, so you should probably give the package to one of his students.";
+				callsub S_GiveSerial,3012685,5,3487372,6;
+				break;
+			case 4:
+				mes "First, get the delivery package from the storehouse, and then give it to the Kafra Employee stationed on Byalan Island.";
+				callsub S_GiveSerial,3318702,7,3543625,8;
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "Ummmm...";
+				mes "And I also have";
+				mes "a bit of a personal";
+				mes "request for you.";
+				next;
+				mes "[Chief Mahnsoo]";
+				mes "Would you please give her this message when you deliver the package? Please~";
+				getitem 1072,1; //Delivery_Message
+				break;
+			}
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Don't forget your destination and the package's Serial Number. You will need to tell those to the storekeeper in the storehouse to the right of me.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "After the delivery, give the receipt to the storekeeper, and then come back and see me.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Is that clear?";
+			mes "Alright, that's";
+			mes "the spirit.";
+			mes "Take care!";
+			close;
+		case 2:
+			mes "[Chief Mahnsoo]";
+			mes "Merchant?";
+			mes "Well, we basically sell goods to make money. That is the way";
+			mes "of the Merchant.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "I guess we may not be the best at fighting, and we don't have many special attacks. We've got no healing skills...";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "But we can buy goods at lower prices from NPC shops and sell them at a higher price to other people~";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Our ultimate attack skill is 'Mammonite.' The strength of Mammonite comes from the anger";
+			mes "when we're forced to throw away perfectly good zeny.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Throwing away zeny like that";
+			mes "causes a deadly rage to well up in the heart of any Merchant!";
+			mes "Just thinking about it";
+			mes "makes my blood boil!";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Anyway, we can use most";
+			mes "weapons except Bows, Rods, and Two-Handed Swords. But we can always sell those.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Yes...";
+			mes "We Merchants generally";
+			mes "have money on our minds...";
+			close;
+		case 3:
+			mes "[Chief Mahnsoo]";
+			mes "There are three conditions that must be fulfilled before you can become a Merchant.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "First, You have to be a Novice with Job Level 10, and have learned all of the Basic Skills.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Second, You have to pay a 1,000 Zeny Membership Fee. I believe any Merchant candidate should be able to earn 1,000 Zeny with ease.";
+			next;
+			mes "[Chief Mahnsoo]";
+			mes "Third, there is a License Test to test your physical strength and sense of direction. You will deliver a package to a specific person in a specific location.";
+			close;
+		case 4:
+			close;
+		}
+	}
+
+S_GiveSerial:
+	next;
+	mes "[Chief Mahnsoo]";
+	mes "Remember...";
+	if (rand(1)) {
+		mes "The package's";
+		mes "Serial Number is";
+		mes "^3355FF"+getarg(0)+"^000000.";
+		set job_merchant_q2,getarg(1);
+	}
+	else {
+		mes "The package's";
+		mes "Serial Number is";
+		mes "^3355FF"+getarg(2)+"^000000.";
+		set job_merchant_q2,getarg(3);
+	}
+	return;
 }
 
-alberta_in,28,29,2	script	Merchant Guildsman	83,{
-	if ((MERCNT_Q >= 0) && (MERCNT_Q <= 2)) {
+alberta_in,28,29,2	script	Merchant Guildsman#mer	83,{
+	if (BaseJob == Job_Merchant) {
 		mes "[Union Staff Kay]";
-		mes "I am sorry, but we don't make deliveries anymore.";
-		mes "Didn't Chief Mahnsoo tell you?";
+		mes "Heya pal.";
+		mes "How ya doin'?";
 		close;
 	}
-	mes "[Union Staff Kay]";
-	mes "Ah, we don't make deliveries anymore.";
-	mes "Too many people cried and kept whining that it's too difficult.";
-	next;
-	mes "[Union Staff Kay]";
-	mes "Well, maybe we will have a few deliveries later.";
-	mes "Anyway, I don't have any work now...";
-	close;
+	else if (BaseJob != Job_Merchant && BaseJob != Job_Novice) {
+		mes "[Union Staff Kay]";
+		mes "Hey you. We don't have any open positions for part time work. If you wanna earn some zeny, you'll hafta look elsewhere.";
+		close;
+	}
+	else if (job_merchant_q == 9) {
+		mes "[Union Staff Kay]";
+		mes "Hey you. Yeah, you.";
+		mes "If you wanna restart the test, go visit Mahnsoo in the other room. Then we can talk.";
+		close;
+	}
+	else if (job_merchant_q == 8 || job_merchant_q == 7) {
+		mes "[Union Staff Kay]";
+		mes "Alright! Everything looks perfect! I'll report your success to the guildmaster. Now go talk to Chief Mahnsoo, yeah?";
+		close;
+	}
+	else if (job_merchant_q == 6 || job_merchant_q == 5) {
+		mes " [Union Staff Kay] ";
+		mes "Oh, yeah? Okay, lemme check. Your name is " + strcharinfo(0) + "? Alright, your destination was...";
+		next;
+		mes "[Union Staff Kay]";
+		if (job_merchant_q2 == 1 || job_merchant_q2 == 2)
+			mes "Wow! You met the Kafra babe in Prontera?! Lucky you~ ...Receipt?";
+		else if (job_merchant_q2 == 3 || job_merchant_q2 == 4)
+			mes "Geffen Magic Academy. Okay, receipt?";
+		else if (job_merchant_q2 == 5 || job_merchant_q2 == 6)
+			mes "The dyemaker in Morroc. Not bad. Receipt?";
+		else if (job_merchant_q2 == 7 || job_merchant_q2 == 8)
+			mes "Oh hohohoho~! The Kafra Babe on Byalan Island?! Awesome! Anyway, did you bring the receipt?";
+
+		if (job_merchant_q2 == 1 && countitem(1073) != 0)
+			delitem 1073,1; //Merchant_Voucher_1
+		else if (job_merchant_q2 == 2 && countitem(1074) != 0)
+			delitem 1074,1; //Merchant_Voucher_2
+		else if (job_merchant_q2 == 3 && countitem(1075) != 0)
+			delitem 1075,1; //Merchant_Voucher_3
+		else if (job_merchant_q2 == 4 && countitem(1076) != 0)
+			delitem 1076,1; //Merchant_Voucher_4
+		else if (job_merchant_q2 == 5 && countitem(1077) != 0)
+			delitem 1077,1; //Merchant_Voucher_5
+		else if (job_merchant_q2 == 6 && countitem(1078) != 0)
+			delitem 1078,1; //Merchant_Voucher_6
+		else if (job_merchant_q2 == 7 && countitem(1079) != 0)
+			delitem 1079,1; //Merchant_Voucher_7
+		else if (job_merchant_q2 == 8 && countitem(1080) != 0)
+			delitem 1080,1; //Merchant_Voucher_8
+		else {
+			next;
+			set job_merchant_q,9;
+			mes " [Union Staff Kay] ";
+			mes "Wait a sec.";
+			mes "Where's the receipt?";
+			mes "What happened?";
+			next;
+			mes " [Union Staff Kay] ";
+			mes "If you don't have the receipt, you fail the test! You better talk to Mahnsoo if you wanna retake it, alright? Pay attention next time!";
+			close;
+		}
+		next;
+		mes " [Union Staff Kay] ";
+		mes "...Great! Everything's perfect! I'll report your success to the Guildmaster. You should talk to Chief Mahnsoo now, alright?";
+		close2;
+		if (job_merchant_q == 6)
+			set job_merchant_q,8;
+		else if (job_merchant_q == 5)
+			set job_merchant_q,7;
+		end;
+	}
+	else if (job_merchant_q == 4 || job_merchant_q == 3 && countitem(1081) == 0 && countitem(1082) == 0 && countitem(1091) == 0) {
+		mes " [Union Staff Kay] ";
+		mes "Huh?";
+		mes "You're back?";
+		mes "So how did";
+		mes "the delivery go?";
+		next;
+		if (select("*Sob* I lost the package.:Fine.") == 1) {
+			set job_merchant_q,9;
+			mes "[Union Staff Kay]";
+			mes "Are you kidding me? You'll fail the test if you lose the package!";
+			next;
+			mes "[Union Staff Kay]";
+			mes "Awwww man. Well, if you wanna restart the test, talk to Mahnsoo, okay? You're lucky you're getting another chance!";
+			close;
+		}
+		mes "[Union Staff Kay]";
+		mes "Huh...";
+		mes "Okay...";
+		close;
+	}
+	else if (job_merchant_q == 4 || job_merchant_q == 3 && countitem(1081) != 0 || countitem(1082) != 0 || countitem(1091) != 0) {
+		mes "[Union Staff Kay]";
+		mes "Hey, what are you still doing here? Shouldn't you be on your way already?";
+		next;
+		if (select("I need a new package.:Oh, yeah. You're right!") == 1) {
+			if (countitem(1081) == 0 && countitem(1082) == 0 && countitem(1083) == 0 && countitem(1091) == 0) {
+				mes "[Union Staff Kay]";
+				mes "Wha--?";
+				mes "So where did";
+				mes "the package go?";
+				mes "Where is it?!";
+				next;
+				if (select("*Sob* I lost it!:I have it right here.") == 1) {
+					set job_merchant_q,9;
+					mes "[Union Staff Kay]";
+					mes "You...";
+					mes "Lost it?!";
+					mes "You failed the test!";
+					next;
+					mes "[Union Staff Kay]";
+					mes "*Sigh* If you want to restart the test, go visit Mahnsoo in the other room, alright?";
+					close;
+				}
+				mes "[Union Staff Kay]";
+				mes "Huh.";
+				mes "I thought";
+				mes "you lost it.";
+				mes "You don't";
+				mes "need a new one.";
+				close;
+			}
+			mes "[Union Staff Kay]";
+			mes "*Sigh* Man, you're starting to become a pain in the ass. Hold on, lemme cancel your record...";
+			if (countitem(1081) != 0)
+				delitem 1081,1; //Merchant_Box_1
+			else if (countitem(1082) != 0)
+				delitem 1082,1; //Merchant_Box_2
+			else if (countitem(1091) != 0)
+				delitem 1091,1; //Merchant_Box_Etc
+			if (job_merchant_q == 4)
+				set job_merchant_q,2;
+			else if (job_merchant_q == 3)
+				set job_merchant_q,1;
+			next;
+			mes "[Union Staff Kay]";
+			mes "I need some time to get everything in order, so come back later.";
+			close;
+		}
+		mes "[Union Staff Kay]";
+		mes "What a bummer...";
+		close;
+	}
+	else if ((job_merchant_q == 0 || job_merchant_q == 1 || job_merchant_q == 2)) {
+		set where_village,0;
+		mes "[Union Staff Kay]";
+		mes "Hey there.";
+		mes "what brings";
+		mes "you here?";
+		next;
+		switch(select("My Merchant License test.:I'm looking for part time work.:Nothing.")) {
+		case 1:
+			mes "[Union Staff Kay]";
+			mes "I see.";
+			mes "Alright.";
+			mes "So what's";
+			mes "your name?";
+			mes "" + strcharinfo(0) + "...?";
+			next;
+			if (job_merchant_q == 0) {
+				mes "[Union Staff Kay]";
+				mes "Huh. Your name's not on my list. Did you apply for the job change quest or what?";
+				next;
+				mes "[Union Staff Kay]";
+				mes "You gotta apply first by talking to Chief Mahnsoo in the center";
+				mes "of this building, okay?";
+				close;
+			}
+			mes "[Union Staff Kay]";
+			mes "Alright, there you go. Lemme give you the package. Now, choose the destination of the delivery.";
+			next;
+			switch(select("Prontera.:Geffen.:Morocc.:Byalan Island.")) {
+			case 1: set .@where_village,1; break;
+			case 2: set .@where_village,2; break;
+			case 3: set .@where_village,3; break;
+			case 4: set .@where_village,4; break;
+			}
+			mes "[Union Staff Kay]";
+			mes "Okay, now you need to give me the package's Serial Number. If you wanna cancel, just enter '0', alright?";
+			next;
+			while(1) {
+				while(1) {
+					input .@input;
+					if (.@input == 0) {
+						mes "[Union Staff Kay]";
+						mes "Are you sure that you wanna cancel?";
+						if (select("Yes.:Let me try again.") == 1) {
+							mes "Alright, we'll cancel for now.";
+							close;
+						}
+						next;
+					}
+					else if (.@input < 1000000 || .@input > 5000000) {
+						mes "[Union Staff Kay]";
+						mes "Hey hey. That number's not valid! Enter a value from 1000000 to 5000000. got it?";
+						next;
+					}
+					else 
+						break;
+				}
+				mes "[Union Staff Kay]";
+				if (.@where_village == 1)
+					mes "Destination is Prontera. The Serial Number is " + .@input + ". Are you positive?";
+				else if (.@where_village == 2)
+					mes "Destination is Geffen. Phew! That's really far! The Serial Number is " + .@input + ". Are you positive?";
+				else if (.@where_village == 3)
+					mes "Destination is Morocc. That's pretty far away! The Serial Number is " + .@input + ". Are you positive?";
+				else
+					mes "Lucky you! Your destination is Byalan Island. The Serial Number is " + .@input + ". Are you positive?";
+				next;
+				if (select("Positive.:Whoops! Wrong number!") == 1) {
+					break;
+				}
+			}
+			if (.@where_village == 1) {
+				if (job_merchant_q2 == 1 && .@input == 2485741)
+					getitem 1081,1; //Merchant_Box_1
+				else if (job_merchant_q2 == 2 && .@input == 2328137)
+					getitem 1082,1; //Merchant_Box_2
+				else
+					getitem 1091,1; //Merchant_Box_Etc
+			}
+			else if (.@where_village == 2) {
+				if (job_merchant_q2 == 3 && .@input == 2989396)
+					getitem 1081,1; //Merchant_Box_1
+				else if (job_merchant_q2 == 4 && .@input == 2191737)
+					getitem 1082,1; //Merchant_Box_2
+				else
+					getitem 1091,1; //Merchant_Box_Etc
+			}
+			else if (.@where_village == 3) {
+				if (job_merchant_q2 == 5 && .@input == 3012685)
+					getitem 1081,1; //Merchant_Box_1
+				else if (job_merchant_q2 == 6 && .@input == 3487372)
+					getitem 1082,1; //Merchant_Box_2
+				else
+					getitem 1091,1; //Merchant_Box_Etc
+			}
+			else {
+				if (job_merchant_q2 == 7 && .@input == 3318702)
+					getitem 1081,1; //Merchant_Box_1
+				else if (job_merchant_q2 == 8 && .@input == 3543625)
+					getitem 1082,1; //Merchant_Box_2
+				else
+					getitem 1091,1; //Merchant_Box_Etc
+			}
+			if (job_merchant_q == 2)
+				set job_merchant_q,4;
+			else if (job_merchant_q == 1)
+				set job_merchant_q,3;
+			mes "[Union Staff Kay]";
+			mes "Alright. Take this package and guard it with your life until it's safely delivered to the customer. Don't lose this thing, got it?";
+			next;
+			mes "[Union Staff Kay]";
+			mes "Well then, I wish you luck. Remember, you gotta bring me";
+			mes "a receipt once you finish the delivery, okay?";
+			close;
+		case 2:
+			mes "[Union Staff Kay]";
+			mes "Part time job? Sorry pal, no jobs yet. The Paymaster's department can never balance our budget...";
+			close;
+		case 3:
+			mes "[Union Staff Kay]";
+			mes "Nothing, eh?";
+			mes "I guess you enjoy";
+			mes "bothering people for";
+			mes "no reason then, yeah?";
+			close;
+		}
+	}
 }
 
 morocc_in,140,102,4	script	Student#mer	86,{
-	if (MERCNT_Q == 4 || MERCNT_Q == 3) {
+	if ((job_merchant_q == 4) || (job_merchant_q == 3)) {
+		mes "[Dyer's Student]";
+		mes "You're from";
+		mes "the Merchant Guild?";
+		mes "Yes! You've come to";
+		mes "the right place.";
+		next;
+		mes "[Dyer's Student]";
+		if (countitem(1081) == 1 || countitem(1082) == 1 || countitem(1091) == 1) {
+			mes "Okay~";
+			mes "Please set the";
+			mes "package down";
+			mes "over there.";
+		}
+		else {
+			mes "But...";
+			mes "Where's the";
+			mes "package I ordered?";
+			mes "That's strange...";
+			close;
+		}
+		next;
+		mes "[Dyer's Student]";
+		mes "Let me check the Serial Number of the package so I can give you the receipt, okay?";
+		next;
+		mes "[Dyer's Student]";
+		if (job_merchant_q2 == 5 && countitem(1081) != 0) {
+			mes "3012685...";
+			mes "That's right.";
+			mes "Here's your";
+			mes "receipt.";
+			delitem 1081,1; //Merchant_Box_1
+			getitem 1077,1; //Merchant_Voucher_5
+		}
+		else if (job_merchant_q2 == 6 && countitem(1082) != 0) {
+			mes "3487372...";
+			mes "That's right.";
+			mes "Here's your";
+			mes "receipt.";
+			delitem 1082,1; //Merchant_Box_2
+			getitem 1078,1; //Merchant_Voucher_6
+		}
+		else {
+			mes "Excuse me, but...";
+			if (job_merchant_q2 == 5)
+				mes "I don't think this is the package we ordered. The Serial Number should be 3012685. See?";
+			else if (job_merchant_q2 == 6)
+				mes "I don't think this is the package we ordered. The Serial Number should be 3487372. See?";
+			else
+				mes "I don't think this is the package we ordered. The Serial Number should be 3012685 or 3487372. Well, one of those two...";
+			close;
+		}
+		if (job_merchant_q == 4)
+			set job_merchant_q,6;
+		else if (job_merchant_q == 3)
+			set job_merchant_q,5;
+		next;
 		mes "[Dyer's Student]";
-		mes "I am sorry, but the Merchant Guild no longer makes deliveries to us anymore.";
+		mes "Thanks a lot!";
+		mes "See you again";
+		mes "sometime!";
+		close;
+	}
+	else if (job_merchant_q == 6 || job_merchant_q == 5 && job_merchant_q2 == 6 || job_merchant_q2 == 5) {
+		mes "[Dyer's Student]";
+		mes "Oh...";
+		mes "You're gonna";
+		mes "go back? Okay";
+		mes "then, take care!";
+		close;
+	}
+	else {
+		mes "[Dyer's Student]";
+		mes "Mr. Java Dullihan is the one and only, the best dye maker on the Rune-Midgard continent.";
+		next;
+		mes "[Dyer's Student]";
+		mes "Aaaand I'm proud to say that I'm his student! Someday, I'll be able to make really beautiful dyes too!";
+		next;
+		mes "[Dyer's Student]";
+		mes "Of course, I'm still learning the basics right now, but someday...";
 		close;
 	}
-	mes "[Dyer's Student]";
-	mes "Mr. Java Dullihan is the one and only, the best dye maker on the Rune-Midgard continent.";
-	next;
-	mes "[Dyer's Student]";
-	mes "Aaaand I'm proud to say that I'm his student! Someday, I'll be able to make really beautiful dyes too!";
-	next;
-	mes "[Dyer's Student]";
-	mes "Of course, I'm still learning the basics right now, but someday...";
-	close;
 }
 
-geffen_in,155,122,4	script	Guild Staff	47,{
-	if (MERCNT_Q == 4 || MERCNT_Q == 3) {
+geffen_in,155,122,4	script	Guild Staff#mer	47,{
+	if (job_merchant_q == 4 || job_merchant_q == 3) {
+		mes "[Guild Staff]";
+		mes "Ah, you must be with the Merchant Guild. Finally, my package has arrived! Alright...!";
+		next;
+		mes "[Guild Staff]";
+		if (countitem(1081) == 1 || countitem(1082) == 1 || countitem(1091) == 1) {
+			mes "You must be very tired";
+			mes "from having to travel";
+			mes "in this kind";
+			mes "of weather...";
+		}
+		else {
+			mes "Wait...";
+			mes "Where's the";
+			mes "package?";
+			close;
+		}
+		next;
 		mes "[Guild Staff]";
-		mes "I am sorry, but the Merchant Guild no longer makes deliveries to us anymore.";
+		mes "Alright, let me";
+		mes "check the Serial Number...";
+		if (job_merchant_q2 == 3 && countitem(1081) != 0) {
+			mes "2989396. Yes, this is what we ordered. Here is your receipt.";
+			delitem 1081,1; //Merchant_Box_1
+			getitem 1075,1; //Merchant_Voucher_3
+		}
+		else if (job_merchant_q2 == 4 && countitem(1082) != 0) {
+			mes "2191737. Yes, this is what we ordered. Here is your receipt.";
+			delitem 1082,1; //Merchant_Box_2
+			getitem 1076,1; //Merchant_Voucher_4
+		}
+		else {
+			mes "Uh oh, this is the wrong number. This isn't what we ordered...";
+			next;
+			mes "[Guild Staff]";
+			if (job_merchant_q2 == 3) {
+				mes "The Serial Number";
+				mes "should be 2989396.";
+			}
+			else if (job_merchant_q2 == 4) {
+				mes "The Serial Number";
+				mes "should be 2191737.";
+			}
+			else {
+				mes "The Serial Number";
+				mes "should be 2989396";
+				mes "or 2191737, one of";
+				mes "those two.";
+			}
+			mes "Look here!";
+			mes "Don't you see";
+			mes "something";
+			mes "is wrong?";
+			close;
+		}
+		if (job_merchant_q == 4)
+			set job_merchant_q,6;
+		else if (job_merchant_q == 3)
+			set job_merchant_q,5;
+		next;
+		mes "[Guild Staff]";
+		mes "Heh heh~";
+		mes "Thank you!";
+		mes "Bye bye!";
 		close;
 	}
-	mes "[Guild Staff]";
-	mes "My package should have arrived by now. Huh. I guess the Merchant Guild might be running a little late...";
-	close;
-}
+	else if (job_merchant_q == 6 || job_merchant_q == 5 && job_merchant_q2 == 4 || job_merchant_q2 == 3) {
+		mes "[Guild Staff]";
+		mes "Hello,";
+		mes "Merchant Guildsman~";
+		mes "I give you my thanks.";
+		close;
+	}
+	else {
+		mes "[Guild Staff]";
+		mes "My package should have arrived by now. Huh. I guess the Merchant Guild might be running a little late...";
+		close;
+	}
+}
+
+prontera,248,42,0	script	Kafra Employee#mer	116,{
+	cutin "kafra_02",2;
+	if (job_merchant_q == 6 || job_merchant_q == 5) && (job_merchant_q2 == 2 || job_merchant_q2 == 1) {
+		mes "[Kafra Employee]";
+		mes "Oh! Thank you for";
+		mes "traveling such a long";
+		mes "way to come over here~";
+		close2;
+		cutin "",255;
+		end;
+	}
+	else if (job_merchant_q == 4 || job_merchant_q == 3) {
+		mes "[Kafra Employee]";
+		mes "A delivery from";
+		mes "the Merchant Guild?";
+		mes "Oh, yes, please set";
+		mes "it down right over there...";
+		if (countitem(1081) == 1 || countitem(1082) == 1 || countitem(1091) == 1) {
+			mes "You must be really tired";
+			mes "after carrying it for so long!";
+		}
+		else {
+			mes "W-wait. Didn't you bring it?";
+			mes "Where's the package?";
+			close2;
+			cutin "",255;
+			end;
+		}
+		next;
+		mes "[Kafra Employee]";
+		mes "Now, let me check";
+		mes "the serial number...";
+		if (job_merchant_q2 == 1 && countitem(1081) != 0) {
+			mes "2485741. Right, this is";
+			mes "the one we ordered. Oh,";
+			mes "and don't forget this receipt!";
+			next;
+			delitem 1081,1; //Merchant_Box_1
+			getitem 1073,1; //Merchant_Voucher_1
+		}
+		else if (job_merchant_q2 == 2 && countitem(1082) != 0) {
+			mes "2328137. Right, this is";
+			mes "the one we ordered. Oh,";
+			mes "and don't forget this receipt!";
+			next;
+			delitem 1082,1; //Merchant_Box_2
+			getitem 1074,1; //Merchant_Voucher_2
+		}
+		else {
+			mes "Mmmm? Hold on. This is";
+			mes "the wrong package. What we";
+			if (job_merchant_q2 == 1)
+				mes "ordered had the serial number 2485741. I'm sure it's not this.";
+			else if (job_merchant_q2 == 2)
+				mes "ordered had the serial number 2328137. I'm sure it's not this.";
+			else
+				mes "ordered had the serial number 2328137 or 2328137.";
+			next;
+			mes "[Kafra Employee]";
+			mes "I'm afraid there";
+			mes "must be some kind";
+			mes "of mistake. Perhaps";
+			mes "you should go back to";
+			mes "the Merchant Guild to";
+			mes "clear up this situation?";
+			close2;
+			cutin "",255;
+			end;
+		}
+		if (job_merchant_q == 4)
+			set job_merchant_q,6;
+		else if (job_merchant_q == 3)
+			set job_merchant_q,5;
+		mes "[Kafra Employee]";
+		mes "Thanks again";
+		mes "for going through";
+		mes "all of that trouble~";
+		close2;
+		cutin "",255;
+		end;
+	}
+	else {
+		mes "[Kafra Employee]";
+		mes "Welcome to the";
+		mes "Kafra Corportation,";
+		mes "where the service is";
+		mes "always on your side~";
+		next;
+		mes "[Kafra Employee]";
+		mes "As you can see, the";
+		mes "Swordman Assocation";
+		mes "has moved to Izlude, a";
+		mes "satellite city of Prontera.";
+		mes "Currently, we offer a Teleport";
+		mes "Service to Izlude for 600 zeny.";
+		next;
+		if (select("Use:Cancel") == 1) {
+			if (Zeny < 600) {
+				mes "[Kafra Employee]";
+				mes "I'm sorry, but you";
+				mes "don't have enough zeny";
+				mes "for this Teleport Service.";
+				close2;
+				cutin "",255;
+				end;
+			}
+			set zeny,zeny-600;
+			set RESRVPTS, RESRVPTS + 37;
+			cutin "",255;
+			warp "izlude",94,103;
+			end;
+		}
+		close2;
+		cutin "",255;
+		end;
+	}
+}
+
+//izlu2dun,106,58,4	script	Kafra Employee#mer	116,{
+function	script	F_MercKafra	{
+	if ((job_merchant_q == 6 || job_merchant_q == 5) && (job_merchant_q2 == 8 || job_merchant_q2 == 7)) {
+		mes "[Kafra Employee]";
+		mes "Oh hello~";
+		mes "Um, is there";
+		mes "some special reason";
+		mes "as to why you're here?";
+		close2;
+		cutin "",255;
+		end;
+	}
+	else if (job_merchant_q == 4 || job_merchant_q == 3) {
+		mes "[Kafra Employee]";
+		mes "A delivery from";
+		mes "the Merchant Guild?";
+		mes "Oh, yes, please set";
+		mes "it down right over there...";
+		if (countitem(1081) == 1 || countitem(1082) == 1 || countitem(1091) == 1) {
+			mes "You must be really tired";
+			mes "after carrying it for so long!";
+		}
+		else {
+			mes "W-wait. Didn't you bring it?";
+			mes "Where's the package?";
+			close2;
+			cutin "",255;
+			end;
+		}
+		next;
+		mes "[Kafra Employee]";
+		mes "Now, let me check";
+		mes "the serial number...";
+		if (job_merchant_q2 == 7 && countitem(1081) != 0) {
+			mes "3318702. Right, this is";
+			mes "the one we ordered. Oh,";
+			mes "and don't forget this receipt!";
+			delitem 1081,1; //Merchant_Box_1
+			getitem 1079,1; //Merchant_Voucher_7
+		}
+		else if (job_merchant_q2 == 8 && countitem(1082) != 0) {
+			mes "3543625. Right, this is";
+			mes "the one we ordered. Oh,";
+			mes "and don't forget this receipt!";
+			delitem 1082,1; //Merchant_Box_2
+			getitem 1080,1; //Merchant_Voucher_8
+		}
+		else {
+			mes "Mmmm? Hold on. This is";
+			mes "the wrong package. What we";
+			if (job_merchant_q2 == 7)
+				mes "ordered had the serial number 3318702. I'm sure it's not this.";
+			else if (job_merchant_q2 == 8)
+				mes "ordered had the serial number 3543625. I'm sure it's not this.";
+			else
+				mes "ordered had the serial number 3318702 or 3543625.";
+			close2;
+			cutin "",255;
+			end;
+		}
+		if (job_merchant_q == 4)
+			set job_merchant_q,6;
+		else if (job_merchant_q == 3)
+			set job_merchant_q,5;
+		next;
+		if (countitem(1072) != 0 && quest_alb_01 == 0) {
+			select("This is from Chief Mahnsoo of the Merchant Guild...");
+			delitem 1072,1; //Delivery_Message
+			set quest_alb_01,1;
+			mes "[Kafra Employee]";
+			mes "Oh~! A letter from";
+			mes "Mahnsoo! Thank you";
+			mes "so much, I've been dying";
+			mes "to hear from him. How is";
+			mes "he doing, is he alright?";
+			mes "I can't wait to read it...";
+			next;
+			mes "[Kafra Employee]";
+			mes "Oh, thank you for";
+			mes "going through all the";
+			mes "trouble of delivering all";
+			mes "of this. This isn't anything";
+			mes "special, but please take it.";
+			mes "Well, see you again~";
+			getitem 513,3; //Banana
+		}
+		else {
+			mes "[Kafra Employee]";
+			mes "Thanks again";
+			mes "for going through";
+			mes "all of that trouble~";
+		}
+		close2;
+		cutin "",255;
+		end;
+	}
+	return;
+}

+ 589 - 84
npc/pre-re/jobs/1-1/swordman.txt

@@ -1,138 +1,643 @@
 //===== rAthena Script ======================================= 
-//= Renewal Swordman Job Change
+//= Swordsman Job Quest
 //===== By: ================================================== 
-//= Kisuka
+//= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.1
+//= 2.3
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Job Change to Swordman Class
+//= [Aegis Conversion]
+//= Job quest for Swordman classes
+//= Uses Job_sword1 as opposed to sword_1-1 -> sword_3-1.
+//= EXPLOITABLE in a sense because while the sword_x-1 maps
+//= are marked as "inside" by the client, job_sword1 is not.
+//= giving players FREE camera rotation while doing the job quest.
 //===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
+//= Fully working.  I have created a custom warp to get into the test room so disable
+//= the one in your warp script or scripts.  It is this warp: "izlude_in",40,170.
+//= 1.1 Added instant job change for High Novice [Lupus]
+//= 1.3 Added Baby Class support [Lupus]
+//= 1.4 Changed the timing system to initnpctimer, now you do get warnings about time
+//=     and are limited to 7min to complete the quest [Fredzilla]
+//= 1.5 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= 1.5.1 Fixed possible EXP abuse [Lupus]
+//= 1.5.2 Now saves/restores all quest skills [Lupus]
+//= 1.5.3 Removed Duplicates [Silent]
+//= 1.6 Merged back JFunc, CHANGED NUMBERS TO CONSTANTS [Lupus]
+//= 1.7 changed location from its clone to the original [Lupus]
+//= 1.7.1 Fixed warp on timeout [KarLaeda]
+//= 1.8 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	Removed "green" traps, quest is no longer timed.
+//=	No longer uses function "F_ToHigh"
+//= 1.9 Dialog is official, but the Script is now custom as far as maps go. [L0ne_W0lf]
+//= 1.9b Fixed usage of wrong jobchange func messing up baby classes [ultramage]
+//= 2.0 Corrected NPC names to fall within proper resctrictions. [L0ne_W0lf]
+//= 2.1 Fixed mistake in condition check. [L0ne_W0lf]
+//= 2.2 Warp portals dont end with ; [Yommy]
+//= 2.3 Added Quest Log commands. [L0ne_W0lf]
 //============================================================ 
-izlude_in,74,172,4	script	Swordman	119,{
+
+izlude_in,74,172,4	script	Swordman#swd_1	119,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Lord_Knight || ADVJOB == Job_Paladin)) {
-			mes "[Swordman Guildsman]";
+		if (Class == Job_Novice_High && (ADVJOB == Job_Lord_Knight || ADVJOB == Job_Paladin)) {
+			mes "[Swordman]";
 			mes "It...";
 			mes "Can't be...";
 			mes "You've been reborn, haven't you?";
 			next;
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "I see you're retreading the path of the Swordman! Once you've gotten used to brandishing a sword, you can never go back!!";
 			next;
 			if (getskilllv("NV_BASIC") < 9) {
-				mes "[Swordman Guildsman]";
+				mes "[Swordman]";
 				mes "Hmm? Ah, you must first master the Basic Skills before you are ready to become a Swordman.";
 				next;
-				mes "[Swordman Guildsman]";
+				mes "[Swordman]";
 				mes "Come back to me when you have finished learning the Basic Novice Skills.";
 				close;
 			}
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "Excellent! Let me promote you to a Swordman right away!";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Swordman_High;
 			skill 144,1,0;
 			skill 145,1,0;
 			skill 146,1,0;
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "Hmm... You look like a well-experienced Swordman. Still, I'm sure that you must train to improve your skills and gain strength!";
 			close;
 		}
-		mes "[Swordman Guildsman]";
-		mes "Hm...?";
-		mes "You're a reborn";
-		mes "warrior, aren't you?";
-		next;
-		mes "[Swordman Guildsman]";
-		mes "Hmmm...";
-		mes "It seems that being";
-		mes "a Swordman is not part";
-		mes "of your destiny. I'm sorry,";
-		mes "but it seems there is nothing";
-		mes "I can do for you.";
-		close;
+		else {
+			mes "[Swordman]";
+			mes "Hm...?";
+			mes "You're a reborn";
+			mes "warrior, aren't you?";
+			next;
+			mes "[Swordman]";
+			mes "Hmmm...";
+			mes "It seems that being";
+			mes "a Swordman is not part";
+			mes "of your destiny. I'm sorry,";
+			mes "but it seems there is nothing";
+			mes "I can do for you.";
+			close;
+		}
 	}
-	mes "[Swordman Guildsman]";
+	mes "[Swordman]";
 	mes "Welcome to the";
 	mes "Swordman Association!";
 	next;
-	mes "[Swordman Guildsman]";
+	mes "[Swordman]";
 	mes "So...";
 	mes "What business";
 	mes "brings you to us?";
 	next;
-	switch (select("Tell me about being a Swordman.:I want to be a Swordman.:Cancel.")) {
+	switch(select("Job Change:About Swordman.:About the Job requirements.:Cancel.")) {
 	case 1:
-		mes "[Swordman Guildsman]";
+		if (BaseJob == Job_Swordman) {
+			mes "[Swordman]";
+			mes "Job change? Muhahaha! But you're already a Swordman! Be proud and be strong!";
+			close;
+		}
+		else if (BaseJob != Job_Novice) {
+			mes "[Swordman]";
+			mes "Haha! Oh boy. I'm flattered, but you already have another job! Still, I can't blame you...";
+			close;
+		}
+		if (job_sword_q == 0) {
+			mes "[Swordman]";
+			mes "So you wish to become a proud Swordman? By all means, please sign up!";
+			next;
+			if (select("Sign up.:Cancel.") == 1) {
+				savepoint "izlude_in",65,165;
+				set job_sword_q,1;
+				setquest 1014;
+				mes "[Swordman]";
+				mes "Ah, yes. Your application will be reviewed as soon as possible.";
+				next;
+				mes "[Swordman]";
+				mes "If you have already met the requirements, you can take an interview right now. Would you like to?";
+				next;
+				if (select("Yes.:No.") == 1) {
+					mes "[Swordman]";
+					mes "Good, good.";
+					mes "Now, let's see...";
+					next;
+				}
+				else {
+					mes "[Swordman]";
+					mes "Alright then. Feel free to come back whenever you are ready. All you ahve to do now is meet our requirements. Good luck to you.";
+					close;
+				}
+			}
+			else {
+				mes "[Swordman]";
+				mes "Hm? Alright, come back whenever you change your mind. The world can always use another Swordman!";
+				close;
+			}
+		}
+		mes "[Swordman]";
+		if (getskilllv("NV_BASIC") < 9) {
+			mes "Hm, you still haven't learned all of the Basic Skills. You need to do that before you can become a Swordman.";
+			next;
+			mes "[Swordman]";
+			mes "Check the requirements for job change again, and come back when you are ready.";
+			close;
+		}
+		else if (job_sword_q <= 3) {
+			mes "Hm, you've learned all of the Basic Skills but didn't take the test yet. You must first pass the exam before you can change your job to Swordman.";
+			next;
+			mes "[Swordman]";
+			mes "Enter the room to my right so that you can take the test. You'll need to speak to my right so you can enter the examination area.";
+			close;
+		}
+		else if (job_sword_q == 4) {
+			mes "Hahaha! Congratulations! Now you are fully qualified to be a real Swordman! I will transform you right away!";
+			next;
+			callfunc "Job_Change",Job_Swordman;
+			set job_sword_q,0;
+			completequest 1014;
+			mes "[Swordman]";
+			mes "Once again, congratulations. I expect that you will be a good representative of the Swordman Association.";
+			close;
+		}
+	case 2:
+		mes "[Swordman]";
 		mes "So you wish to know more about the mighty Swordman job? Well, then...";
 		next;
-		mes "[Swordman Guildsman]";
+		mes "[Swordman]";
 		mes "Amongst the First Class jobs, the Swordman is the best melee fighter for three reasons.";
 		mes "There are 3 reasons why Swordy is the best to approch a fight!";
 		next;
-		mes "[Swordman Guildsman]";
+		mes "[Swordman]";
 		mes "First, Swordman has the benefit of additional HP. Second, Swordman generally have access to a wider selection fo weapons than the other First Class jobs.";
 		next;
-		mes "[Swordman Guildsman]";
+		mes "[Swordman]";
 		mes "And third, most of the Swordman skills are crushing physical attacks! In my opinion, being a Swordman is the best job ever!";
 		close;
-	case 2:
-		if (Class == Job_Baby || Class == Job_Novice) {
-			if (getskilllv("NV_BASIC") < 9) {
-				mes "[Swordman Guildsman]";
-				mes "I'm sorry to tell you this but to be a Swordman, you must reach at least ^4d4dffJob Level 10^000000.";
-				mes "and ^4d4dffBasic Skill Level 9^000000.";
-				next;
-				mes "[Swordman Guildsman]";
-				mes "Want to be a Swordman without having the minimum requirement?";
-				mes "Do you think being a Swordman is that easy?";
-				close;
-			}
-			mes "[Swordman Guildsman]";
-			mes "Hmm, both your Job Level and Basic Skill Level check out.";
-			mes "Good. Do you want to be a Swordman right away?";
-			next;
-			switch (select("Yes, I do.:I'll consider it again.")) {
-			case 1:
-				mes "[Swordman Guildsman]";
-				mes "Congratulations! From now on, you are going to live a Swordman's life!";
-				mes "I will transform you right away!";
-				next;
-				skill 143,0,1;
-				if(Class == Job_Baby){
-					jobchange Job_Baby_Swordman;
-				} else {
-					jobchange Job_Swordman;
-				}
-				getitem 13415,1; //N_Falchion
-				mes "[Swordman Guildsman]";
-				mes "Congratulations again for becomming a Swordman and I hope that you participate in many activities for the revival of our guild.";
-				close;
-			case 2:
-				mes "[Swordman Guildsman]";
-				mes "Yeah. Careful consideration is needed for choosing a job.";
-				mes "But I feel sorry... that you'll have to consider it again after all the trials....";
-				close;
-			}
-		}
-		if (Class == Job_Baby_Swordman || Class == Job_Swordman) {
-			mes "[Swordman Guildsman]";
-			mes "You are already an excellent Swordman, aren't you?";
-			mes "Just devote yourself to be a great Swordman.";
-			close;
+	case 3:
+		mes "[Swordman]";
+		mes "Hmmm...";
+		if (BaseJob != Job_Novice) {
+			if (BaseJob == Job_Swordman)
+				mes "But there's no need to tell you the requirements. You've met them and already became a Swordman! Well, anyway...";
+			else
+				mes "It's too late for you to become a Swordman. You already have another job. Still, there's no harm in telling you...";
 		}
-		mes "[Swordman Guildsman]";
-		mes "Haha! Oh boy. I'm flattered, but you already have another job! Still, I can't blame you...";
+		next;
+		mes "[Swordman]";
+		mes "First, you must learn all 9 of the Basic Skills. If you can't complete this requirement, you won't be able to change to any job.";
+		next;
+		mes "[Swordman]";
+		mes "Second, you must pass the Swordman Test. Inquire the Test Manager located in the waiting room of the Swordman Test.";
+		next;
+		mes "[Swordman]";
+		mes "If you can complete these 2 requirements, you can change to a Swordman anytime you want.";
 		close;
-	case 3:
-		mes "[Swordman Guildsman]";
+	case 4:
+		mes "[Swordman]";
 		mes "Ha ha ha!";
 		mes "Ah, youth!";
 		close;
 	}
-}
+}
+
+izlude_in,62,170,6	script	Swordman#swd_2	85,{
+	mes "[Swordman]";
+	if (BaseJob == Job_Swordman) {
+		mes "Sorry guy, but I can only allow Novices to enter the Test Hall.";
+		close;
+	}
+	else if (BaseJob != Job_Novice) {
+		mes "Who the hell are you?! Nobody, other than Novices, is permitted to come in here!";
+		close;
+	}
+	else if (getskilllv("NV_BASIC") < 9) {
+		mes "Stop! I can't let you in until you learn all of the Basic Skills. The Test Hall isn't for goofing off!";
+		close;
+	}
+	else if (job_sword_q == 4) {
+		mes "Hey. You need to talk to the Swordman in the center of the room, not me.";
+		close;
+	}
+	else if (job_sword_q == 0) {
+		mes "Stop! If you want to take the Swordman Test, you'll need to fill out an application first.";
+		next;
+		mes "[Swordman]";
+		mes "The Swordman in the center of the room can help you with that, got it?";
+		close;
+	}
+	else {
+		savepoint "izlude_in",65,165;
+		warp "izlude_in",39,170;
+		end;
+	}
+}
+
+izlude_in,30,175,4	script	Swordman#swd_3	92,{
+	mes "[Swordman]";
+	mes "I will tell you about the Test! Listen carefully, I won't repeat myself.";
+	next;
+	mes "[Swordman]";
+	mes "The purpose of this test is to confirm whether or not you are qualified to be a Swordman. As you know, a Swordman needs physical strength and spirit!";
+	next;
+	mes "[Swordman]";
+	mes "Without those, you won't be able to become a Swordman. Now, the conditions for completing this test are very simple.";
+	next;
+	mes "[Swordman]";
+	mes "You will travel through three courses and must reach the final checkpoint within ^FF000010 minutes^000000.";
+	next;
+	mes "[Swordman]";
+	mes "If you choose to 'Surrender,' or if you run out of time, you will not pass the test.";
+	next;
+	mes "[Swordman]";
+	mes "If you find that you are not strong enough to pass the test, head to the entrance of the course and talk to the checkpoint manager.";
+	next;
+	mes "[Swordman]";
+	mes "As you travel through the three courses, you may fall to a random, underground area. The course is designed so that you can still find your way back.";
+	next;
+	mes "[Swordman]";
+	mes "However, be careful, as this will waste your time! Godspeed to you.";
+	close;
+}
+
+izlude_in,30,163,0	script	Test Hall Staff#swd_1	105,{
+	mes "[Test Hall Staff]";
+	if (BaseJob == Job_Swordman) {
+		mes "Hm? How did you get inside? You're not supposed to be in here, so please leave now.";
+		close2;
+		warp "izlude_in",66,170;
+		end;
+	}
+	else if (BaseJob != Job_Novice) {
+		mes "Who are you?! This place is for the Swordman Test! You're not allowed to be in here! Leave now!";
+		close2;
+		warp "izlude_in",66,170;
+		end;
+	}
+	if (job_sword_q == 1) {
+		mes "So are you the one who wants to be a Swordman? Alright! You look reliable!";
+		next;
+		mes "[Test Hall Staff]";
+		mes "Try to relax and do your best. This course isn't so difficult.";
+		set job_sword_q,2;
+	}
+	else if (job_sword_q == 2) {
+		mes "Retesting? Try not to worry about it. It's good that you don't back down from a challenge! Here, take these and cheer up!";
+		getitem 512,5; //Apple
+		set job_sword_q,3;
+	}
+	else if (job_sword_q == 3)
+		mes "Don't ever give up! Now retesting!";
+	close2;
+	warp "job_sword1",10,245;
+	end;
+}
+
+// Examination Courses NPCs
+//============================================================ 
+// 1-1
+job_sword1,230,245,2	script	Medic#swd_1	105,{
+	callfunc "F_JobSwdMedic","1st";
+}
+job_sword1,230,242,2	script	Test Hall Staff#swd_2	105,{
+	callfunc "F_JobSwdStaff",1;
+}
+job_sword1,230,207,2	script	Medic#2swd_2	105,{
+	callfunc "F_JobSwdMedic","2nd";
+}
+job_sword1,230,204,2	script	Test Hall Staff#2swd_3	105,{
+	callfunc "F_JobSwdStaff",1;
+}
+job_sword1,223,167,2	script	Mae#swd_1_success	92,{
+	mapannounce "job_sword1","Applicant " + strcharinfo(0) + ". You successfully passed the test.",bc_map;
+	set job_sword_q,4;
+	mes "[Mae]";
+	mes "I sencerely congratulate you for passing the test!";
+	mes "I already sent your test result to the Job Department.Please inquire at the Officer in Centre.Thank you.";
+	close2;
+	warp "izlude_in",66,173;
+	end;
+}
+
+// Examination Course Functions
+//============================================================ 
+function	script	F_JobSwdMedic	{
+	percentheal 100,0;
+	mes "[Medic]";
+	mes "This is the "+getarg(0)+" check point!Cheer up!";
+	close;
+}
+
+function	script	F_JobSwdStaff	{
+	mes "[Test Hall Staff]";
+	mes "Do you surrender?";
+	next;
+	if (select("Yes.:No.") == 1) {
+		mapannounce "job_sword1","Applicant " + strcharinfo(0) + " quit the test.",bc_map;
+		warp "izlude_in",65,165;
+		end;
+	}
+	mes "[Test Hall Staff]";
+	mes "Bravo! Go for it again!";
+	close;
+}
+
+function	script	F_JobSwdTestStaff	{
+OnTouch:
+	mes "[Test Hall Staff]";
+	mes "Applicant " + strcharinfo(0) + ". Do you surrender??";
+	next;
+	if (select("Yes.:No.") == 1) {
+		mapannounce "job_sword1","Applicant " + strcharinfo(0) + " quit the test..",bc_map;
+		warp "izlude_in",65,165;
+		end;
+	}
+	warp "job_sword1",getarg(0),getarg(1);
+	end;
+}
+
+function	script	F_JobSwdTestStaff2	{
+OnTouch:
+	mapannounce "job_sword1","Applicant " + strcharinfo(0) + ". Pass the "+getarg(0)+" course.",bc_map;
+	warp "job_sword1",getarg(1),getarg(2);
+	end;
+}
+
+// Examination Course 1
+//============================================================ 
+job_sword1,223,243,0	warp	checkp1-2#swd_1	1,1,job_sword1,11,206
+job_sword1,223,205,0	warp	checkp2-3#swd_1	1,1,job_sword1,11,168
+
+job_sword1,7,245,0	script	Test Hall Staff#swd_4	45,1,3,{
+	callfunc "F_JobSwdTestStaff",10,245;
+}
+
+job_sword1,8,207,0	script	Test Hall Staff#swd_5	45,1,6,{
+	callfunc "F_JobSwdTestStaff",11,207;
+}
+
+job_sword1,8,169,0	script	Test Hall Staff#swd_6	45,1,6,{
+	callfunc "F_JobSwdTestStaff",11,169;
+}
+
+job_sword1,192,244,0	script	Test Hall Staff#swd_7	45,1,3,{
+	callfunc "F_JobSwdTestStaff2","1st",215,244;
+}
+
+job_sword1,193,207,0	script	Test Hall Staff#swd_8	45,1,3,{
+	callfunc "F_JobSwdTestStaff2","2nd",215,205;
+	warp "job_sword1",215,205;
+}
+
+job_sword1,193,168,0	script	Test Hall Staff#swd_9	45,1,3,{
+	callfunc "F_JobSwdTestStaff2","3rd",215,167;
+}
+
+// Pitfalls (Set 1)
+//============================================================ 
+job_sword1,65,117,0	warp	pitfall01-01	1,1,job_sword1,10,245
+job_sword1,98,27,0	warp	pitfall02-01	1,1,job_sword1,11,207
+job_sword1,161,27,0	warp	pitfall02-02	1,1,job_sword1,11,207
+job_sword1,239,117,0	warp	pitfall03-01	1,1,job_sword1,11,169
+
+job_sword1,16,251,0	script	1_blank_1_a::SwdTrap1	-1,0,1,{
+OnTouch:
+	switch(rand(1,5)) {
+	case 1: warp "job_sword1",65,56; end;
+	case 2: warp "job_sword1",29,26; end;
+	case 3: warp "job_sword1",43,16; end;
+	case 4: warp "job_sword1",23,112; end;
+	case 5: warp "job_sword1",58,83; end;
+	}
+}
+job_sword1,19,251,0	duplicate(SwdTrap1)	1_blank_1_b	-1,0,1
+job_sword1,17,250,0	duplicate(SwdTrap1)	1_blank_1_c	-1,1,0
+job_sword1,16,238,0	duplicate(SwdTrap1)	1_blank_2_a	-1,0,1
+job_sword1,19,238,0	duplicate(SwdTrap1)	1_blank_2_b	-1,0,1
+job_sword1,17,239,0	duplicate(SwdTrap1)	1_blank_2_c	-1,0,1
+job_sword1,28,247,0	duplicate(SwdTrap1)	1_blank_3_a	-1,4,0
+job_sword1,33,245,0	duplicate(SwdTrap1)	1_blank_3_b	-1,0,2
+job_sword1,29,242,0	duplicate(SwdTrap1)	1_blank_3_c	-1,4,0
+job_sword1,24,244,0	duplicate(SwdTrap1)	1_blank_3_d	-1,0,2
+job_sword1,38,251,0	duplicate(SwdTrap1)	1_blank_4_a	-1,0,1
+job_sword1,41,251,0	duplicate(SwdTrap1)	1_blank_4_b	-1,0,1
+job_sword1,39,250,0	duplicate(SwdTrap1)	1_blank_4_c	-1,1,0
+job_sword1,38,238,0	duplicate(SwdTrap1)	1_blank_5_a	-1,0,1
+job_sword1,41,238,0	duplicate(SwdTrap1)	1_blank_5_b	-1,0,1
+job_sword1,39,239,0	duplicate(SwdTrap1)	1_blank_5_c	-1,1,0
+job_sword1,54,251,0	duplicate(SwdTrap1)	1_blank_6_a	-1,0,1
+job_sword1,71,251,0	duplicate(SwdTrap1)	1_blank_6_b	-1,0,1
+job_sword1,62,250,0	duplicate(SwdTrap1)	1_blank_6_c	-1,9,0
+job_sword1,62,247,0	duplicate(SwdTrap1)	1_blank_7_a	-1,8,0
+job_sword1,71,244,0	duplicate(SwdTrap1)	1_blank_7_b	-1,0,2
+job_sword1,63,242,0	duplicate(SwdTrap1)	1_blank_7_c	-1,8,0
+job_sword1,54,244,0	duplicate(SwdTrap1)	1_blank_7_d	-1,0,2
+job_sword1,54,238,0	duplicate(SwdTrap1)	1_blank_8_a	-1,0,1
+job_sword1,71,238,0	duplicate(SwdTrap1)	1_blank_8_b	-1,0,1
+job_sword1,62,239,0	duplicate(SwdTrap1)	1_blank_8_c	-1,9,0
+job_sword1,102,247,0	duplicate(SwdTrap1)	1_blank_9_a	-1,2,0
+job_sword1,105,245,0	duplicate(SwdTrap1)	1_blank_9_b	-1,0,2
+job_sword1,103,242,0	duplicate(SwdTrap1)	1_blank_9_c	-1,2,0
+job_sword1,100,244,0	duplicate(SwdTrap1)	1_blank_9_d	-1,0,2
+job_sword1,156,249,0	duplicate(SwdTrap1)	1_blank_10_a	-1,14,0
+job_sword1,156,248,0	duplicate(SwdTrap1)	1_blank_10_b	-1,14,0
+job_sword1,170,249,0	duplicate(SwdTrap1)	1_blank_10_c	-1,1,0
+job_sword1,170,248,0	duplicate(SwdTrap1)	1_blank_10_d	-1,1,0
+job_sword1,156,245,0	duplicate(SwdTrap1)	1_blank_11_a	-1,14,0
+job_sword1,156,244,0	duplicate(SwdTrap1)	1_blank_11_b	-1,14,0
+job_sword1,170,245,0	duplicate(SwdTrap1)	1_blank_11_c	-1,1,0
+job_sword1,170,244,0	duplicate(SwdTrap1)	1_blank_11_d	-1,1,0
+job_sword1,156,241,0	duplicate(SwdTrap1)	1_blank_12_a	-1,14,0
+job_sword1,156,240,0	duplicate(SwdTrap1)	1_blank_12_b	-1,14,0
+job_sword1,170,241,0	duplicate(SwdTrap1)	1_blank_12_c	-1,1,0
+job_sword1,170,240,0	duplicate(SwdTrap1)	1_blank_12_d	-1,1,0
+job_sword1,180,251,0	duplicate(SwdTrap1)	1_blank_13_a	-1,0,1
+job_sword1,183,251,0	duplicate(SwdTrap1)	1_blank_13_b	-1,0,1
+job_sword1,181,250,0	duplicate(SwdTrap1)	1_blank_13_c	-1,1,0
+job_sword1,180,238,0	duplicate(SwdTrap1)	1_blank_14_a	-1,0,1
+job_sword1,183,238,0	duplicate(SwdTrap1)	1_blank_14_b	-1,0,1
+job_sword1,181,239,0	duplicate(SwdTrap1)	1_blank_14_c	-1,1,0
+
+job_sword1,193,245,0	warp	1_rest	1,3,job_sword1,215,244
+
+// Pitfalls (Set 2)
+//============================================================ 
+job_sword1,56,212,0	script	2_blank_1_a::SwdTrap2	-1,40,0,{
+OnTouch:
+	switch(rand(1,5)) {
+	case 1: warp "job_sword1",162,120; end;
+	case 2: warp "job_sword1",94,120; end;
+	case 3: warp "job_sword1",94,85; end;
+	case 4: warp "job_sword1",162,85; end;
+	case 5: warp "job_sword1",130,47; end;
+	}
+}
+
+job_sword1,95,212,0	duplicate(SwdTrap2)	2_blank_1_b	-1,2,0
+job_sword1,56,210,0	duplicate(SwdTrap2)	2_blank_2_a	-1,40,0
+job_sword1,95,210,0	duplicate(SwdTrap2)	2_blank_2_b	-1,2,0
+job_sword1,16,206,0	duplicate(SwdTrap2)	2_blank_2_c	-1,0,3
+job_sword1,97,206,0	duplicate(SwdTrap2)	2_blank_2_d	-1,0,3
+job_sword1,56,203,0	duplicate(SwdTrap2)	2_blank_2_e	-1,40,0
+job_sword1,95,203,0	duplicate(SwdTrap2)	2_blank_2_f	-1,2,0
+job_sword1,56,201,0	duplicate(SwdTrap2)	2_blank_3_a	-1,40,0
+job_sword1,95,201,0	duplicate(SwdTrap2)	2_blank_3_b	-1,2,0
+
+job_sword1,113,212,0	duplicate(SwdTrap2)	2_blank_4_a	-1,14,0
+job_sword1,125,212,0	duplicate(SwdTrap2)	2_blank_4_b	-1,2,0
+job_sword1,113,210,0	duplicate(SwdTrap2)	2_blank_5_a	-1,14,0
+job_sword1,125,210,0	duplicate(SwdTrap2)	2_blank_5_b	-1,2,0
+job_sword1,100,206,0	duplicate(SwdTrap2)	2_blank_5_c	-1,0,3
+job_sword1,127,206,0	duplicate(SwdTrap2)	2_blank_5_d	-1,0,3
+job_sword1,113,203,0	duplicate(SwdTrap2)	2_blank_5_e	-1,14,0
+job_sword1,125,210,0	duplicate(SwdTrap2)	2_blank_5_f	-1,2,0
+job_sword1,113,201,0	duplicate(SwdTrap2)	2_blank_6_a	-1,14,0
+job_sword1,113,201,0	duplicate(SwdTrap2)	2_blank_6_b	-1,2,0
+
+job_sword1,155,212,0	duplicate(SwdTrap2)	2_blank_7_a	-1,21,0
+job_sword1,181,212,0	duplicate(SwdTrap2)	2_blank_7_b	-1,2,0
+job_sword1,155,210,0	duplicate(SwdTrap2)	2_blank_8_a	-1,21,0
+job_sword1,181,210,0	duplicate(SwdTrap2)	2_blank_8_b	-1,2,0
+job_sword1,130,206,0	duplicate(SwdTrap2)	2_blank_8_c	-1,0,3
+job_sword1,183,206,0	duplicate(SwdTrap2)	2_blank_8_d	-1,0,3
+job_sword1,155,203,0	duplicate(SwdTrap2)	2_blank_8_e	-1,21,0
+job_sword1,181,203,0	duplicate(SwdTrap2)	2_blank_8_f	-1,2,0
+job_sword1,155,201,0	duplicate(SwdTrap2)	2_blank_9_a	-1,40,0
+job_sword1,181,201,0	duplicate(SwdTrap2)	2_blank_9_b	-1,2,0
+
+// Pitfalls (Set 3)
+//============================================================ 
+job_sword1,17,174,0	script	3_blank_1_a::SwdTrap3	-1,2,0,{
+OnTouch:
+	switch(rand(1,5)) {
+	case 1: warp "job_sword1",195,15; end;
+	case 2: warp "job_sword1",195,38; end;
+	case 3: warp "job_sword1",231,30; end;
+	case 4: warp "job_sword1",198,65; end;
+	case 5: warp "job_sword1",196,116; end;
+	}
+}
+
+job_sword1,17,163,0	duplicate(SwdTrap3)	3_blank_2_a	-1,2,0
+job_sword1,29,171,0	duplicate(SwdTrap3)	3_blank_3_a	-1,2,0
+job_sword1,31,168,0	duplicate(SwdTrap3)	3_blank_3_b	-1,0,2
+job_sword1,28,166,0	duplicate(SwdTrap3)	3_blank_3_c	-1,2,0
+job_sword1,26,168,0	duplicate(SwdTrap3)	3_blank_3_d	-1,0,2
+job_sword1,36,169,0	duplicate(SwdTrap3)	3_blank_4_a	-1,0,0
+job_sword1,37,169,0	duplicate(SwdTrap3)	3_blank_4_b	-1,0,0
+job_sword1,37,168,0	duplicate(SwdTrap3)	3_blank_4_c	-1,0,0
+job_sword1,36,168,0	duplicate(SwdTrap3)	3_blank_4_c2	-1,0,0
+job_sword1,40,175,0	duplicate(SwdTrap3)	3_blank_5_a	-1,0,1
+job_sword1,41,175,0	duplicate(SwdTrap3)	3_blank_5_b	-1,0,1
+job_sword1,41,171,0	duplicate(SwdTrap3)	3_blank_6_a	-1,1,0
+job_sword1,41,170,0	duplicate(SwdTrap3)	3_blank_6_b	-1,1,0
+job_sword1,41,167,0	duplicate(SwdTrap3)	3_blank_6_c	-1,1,0
+job_sword1,41,166,0	duplicate(SwdTrap3)	3_blank_6_d	-1,1,0
+job_sword1,42,169,0	duplicate(SwdTrap3)	3_blank_6_e	-1,0,1
+job_sword1,43,170,0	duplicate(SwdTrap3)	3_blank_6_f	-1,0,1
+job_sword1,43,167,0	duplicate(SwdTrap3)	3_blank_6_g	-1,0,1
+job_sword1,40,162,0	duplicate(SwdTrap3)	3_blank_7_a	-1,0,1
+job_sword1,41,162,0	duplicate(SwdTrap3)	3_blank_7_b	-1,0,1
+job_sword1,46,175,0	duplicate(SwdTrap3)	3_blank_8_a	-1,0,1
+job_sword1,51,175,0	duplicate(SwdTrap3)	3_blank_8_b	-1,0,1
+job_sword1,47,174,0	duplicate(SwdTrap3)	3_blank_8_c	-1,1,0
+job_sword1,50,174,0	duplicate(SwdTrap3)	3_blank_8_d	-1,1,0
+job_sword1,48,173,0	duplicate(SwdTrap3)	3_blank_8_e	-1,0,1
+job_sword1,49,173,0	duplicate(SwdTrap3)	3_blank_8_f	-1,0,1
+job_sword1,46,162,0	duplicate(SwdTrap3)	3_blank_9_a	-1,0,1
+job_sword1,51,162,0	duplicate(SwdTrap3)	3_blank_9_b	-1,0,1
+job_sword1,47,163,0	duplicate(SwdTrap3)	3_blank_9_c	-1,1,0
+job_sword1,50,163,0	duplicate(SwdTrap3)	3_blank_9_d	-1,1,0
+job_sword1,48,164,0	duplicate(SwdTrap3)	3_blank_9_e	-1,0,1
+job_sword1,49,164,0	duplicate(SwdTrap3)	3_blank_9_f	-1,0,1
+job_sword1,54,170,0	duplicate(SwdTrap3)	3_blank_10_a	-1,0,1
+job_sword1,55,170,0	duplicate(SwdTrap3)	3_blank_10_b	-1,0,1
+job_sword1,54,167,0	duplicate(SwdTrap3)	3_blank_10_c	-1,0,1
+job_sword1,55,167,0	duplicate(SwdTrap3)	3_blank_10_d	-1,0,1
+job_sword1,53,169,0	duplicate(SwdTrap3)	3_blank_10_e	-1,1,0
+job_sword1,53,168,0	duplicate(SwdTrap3)	3_blank_10_f	-1,1,0
+job_sword1,56,169,0	duplicate(SwdTrap3)	3_blank_10_g	-1,1,0
+job_sword1,56,168,0	duplicate(SwdTrap3)	3_blank_10_h	-1,1,0
+job_sword1,58,175,0	duplicate(SwdTrap3)	3_blank_11_a	-1,0,1
+job_sword1,59,174,0	duplicate(SwdTrap3)	3_blank_11_b	-1,1,0
+job_sword1,60,173,0	duplicate(SwdTrap3)	3_blank_11_c	-1,0,1
+job_sword1,61,172,0	duplicate(SwdTrap3)	3_blank_11_d	-1,1,0
+job_sword1,58,162,0	duplicate(SwdTrap3)	3_blank_12_a	-1,0,1
+job_sword1,59,163,0	duplicate(SwdTrap3)	3_blank_12_b	-1,1,0
+job_sword1,60,164,0	duplicate(SwdTrap3)	3_blank_12_c	-1,0,1
+job_sword1,61,165,0	duplicate(SwdTrap3)	3_blank_12_d	-1,1,0
+job_sword1,76,172,0	duplicate(SwdTrap3)	3_blank_13_a	-1,1,0
+job_sword1,77,173,0	duplicate(SwdTrap3)	3_blank_13_b	-1,0,1
+job_sword1,78,174,0	duplicate(SwdTrap3)	3_blank_13_c	-1,1,0
+job_sword1,79,175,0	duplicate(SwdTrap3)	3_blank_13_d	-1,0,1
+job_sword1,76,165,0	duplicate(SwdTrap3)	3_blank_14_a	-1,1,0
+job_sword1,77,164,0	duplicate(SwdTrap3)	3_blank_14_b	-1,0,1
+job_sword1,78,163,0	duplicate(SwdTrap3)	3_blank_14_c	-1,1,0
+job_sword1,79,162,0	duplicate(SwdTrap3)	3_blank_14_d	-1,0,1
+job_sword1,94,175,0	duplicate(SwdTrap3)	3_blank_15_a	-1,0,1
+job_sword1,95,174,0	duplicate(SwdTrap3)	3_blank_15_b	-1,1,0
+job_sword1,98,174,0	duplicate(SwdTrap3)	3_blank_15_c	-1,1,0
+job_sword1,99,175,0	duplicate(SwdTrap3)	3_blank_16_d	-1,0,1
+job_sword1,96,169,0	duplicate(SwdTrap3)	3_blank_17_a	-1,0,0
+job_sword1,97,169,0	duplicate(SwdTrap3)	3_blank_17_b	-1,0,0
+job_sword1,97,168,0	duplicate(SwdTrap3)	3_blank_17_c	-1,0,0
+job_sword1,96,168,0	duplicate(SwdTrap3)	3_blank_17_d	-1,0,0
+job_sword1,94,162,0	duplicate(SwdTrap3)	3_blank_18_a	-1,0,1
+job_sword1,95,163,0	duplicate(SwdTrap3)	3_blank_18_b	-1,1,0
+job_sword1,98,163,0	duplicate(SwdTrap3)	3_blank_18_c	-1,1,0
+job_sword1,99,162,0	duplicate(SwdTrap3)	3_blank_18_d	-1,0,1
+job_sword1,114,175,0	duplicate(SwdTrap3)	3_blank_19_a	-1,0,1
+job_sword1,115,175,0	duplicate(SwdTrap3)	3_blank_19_b	-1,0,1
+job_sword1,114,162,0	duplicate(SwdTrap3)	3_blank_20_a	-1,0,1
+job_sword1,115,162,0	duplicate(SwdTrap3)	3_blank_20_b	-1,0,1
+job_sword1,126,175,0	duplicate(SwdTrap3)	3_blank_21_a	-1,0,1
+job_sword1,127,175,0	duplicate(SwdTrap3)	3_blank_21_b	-1,0,1
+job_sword1,126,162,0	duplicate(SwdTrap3)	3_blank_23_a	-1,0,1
+job_sword1,127,162,0	duplicate(SwdTrap3)	3_blank_23_b	-1,0,1
+job_sword1,160,174,0	duplicate(SwdTrap3)	3_blank_24_a	-1,0,2
+job_sword1,161,174,0	duplicate(SwdTrap3)	3_blank_24_b	-1,0,2
+job_sword1,160,163,0	duplicate(SwdTrap3)	3_blank_25_a	-1,0,2
+job_sword1,161,163,0	duplicate(SwdTrap3)	3_blank_25_b	-1,0,2
+job_sword1,168,175,0	duplicate(SwdTrap3)	3_blank_26_a	-1,0,2
+job_sword1,169,175,0	duplicate(SwdTrap3)	3_blank_26_b	-1,0,2
+job_sword1,168,162,0	duplicate(SwdTrap3)	3_blank_27_a	-1,0,2
+job_sword1,169,162,0	duplicate(SwdTrap3)	3_blank_27_b	-1,0,2
+job_sword1,176,174,0	duplicate(SwdTrap3)	3_blank_28_a	-1,0,2
+job_sword1,177,174,0	duplicate(SwdTrap3)	3_blank_28_b	-1,0,2
+job_sword1,178,173,0	duplicate(SwdTrap3)	3_blank_28_c	-1,1,0
+job_sword1,178,172,0	duplicate(SwdTrap3)	3_blank_28_d	-1,1,0
+job_sword1,181,174,0	duplicate(SwdTrap3)	3_blank_28_e	-1,2,0
+job_sword1,179,169,0	duplicate(SwdTrap3)	3_blank_29_a	-1,3,0
+job_sword1,179,168,0	duplicate(SwdTrap3)	3_blank_29_b	-1,3,0
+job_sword1,182,169,0	duplicate(SwdTrap3)	3_blank_29_c	-1,0,2
+job_sword1,183,169,0	duplicate(SwdTrap3)	3_blank_29_d	-1,0,2
+job_sword1,181,167,0	duplicate(SwdTrap3)	3_blank_29_e	-1,1,0
+job_sword1,181,166,0	duplicate(SwdTrap3)	3_blank_29_f	-1,1,0
+job_sword1,183,167,0	duplicate(SwdTrap3)	3_blank_29_g	-1,0,1
+job_sword1,176,163,0	duplicate(SwdTrap3)	3_blank_30_a	-1,0,2
+job_sword1,177,163,0	duplicate(SwdTrap3)	3_blank_30_b	-1,0,2
+job_sword1,181,163,0	duplicate(SwdTrap3)	3_blank_30_c	-1,2,0
+
+// Monsters (all three courses)
+//============================================================ 
+job_sword1,0,0,0,0	monster	Chonchon	1183,20,0,0,0
+job_sword1,35,79,0,0	monster	Fabre	1184,3,60000,30000,0
+job_sword1,50,108,0,0	monster	Fabre	1184,3,60000,30000,0
+job_sword1,61,28,0,0	monster	Fabre	1184,3,60000,30000,0
+job_sword1,61,92,0,0	monster	Fabre	1184,3,60000,30000,0
+job_sword1,110,112,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,161,94,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,130,76,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,103,58,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,130,24,0,0	monster	Fabre	1184,5,60000,30000,0
+job_sword1,201,36,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,201,16,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,239,44,0,0	monster	Fabre	1184,3,60000,30000,0
+job_sword1,239,76,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,231,101,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,234,117,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,198,91,0,0	monster	Fabre	1184,2,60000,30000,0
+job_sword1,200,63,0,0	monster	Fabre	1184,2,60000,30000,0

+ 398 - 189
npc/pre-re/jobs/1-1/thief.txt

@@ -1,33 +1,43 @@
-//===== rAthena Script ======================================= 
-//= Renewal Thief Job Change
-//===== By: ================================================== 
-//= Kisuka
-//===== Current Version: ===================================== 
-//= 1.1
-//===== Compatible With: ===================================== 
+//===== rAthena Script =======================================
+//= Thief Job Quest
+//===== By: ==================================================
+//= rAthena dev team
+//===== Current Version: =====================================
+//= 1.8
+//===== Compatible With: =====================================
 //= rAthena SVN
-//===== Description: ========================================= 
-//= Job Change to Thief Class
-//===== Additional Comments: ================================= 
-//= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
-//============================================================ 
-moc_prydb1,39,129,2	script	Thief Guildsman	69,{
+//===== Description: =========================================
+//= [Aegis Conversion]
+//= Job quest for Thief classes
+//===== Additional Comments: =================================
+//= Fully working
+//= v1.1 Added instant job change for High Novice [Lupus]
+//= 1.3 Added Baby Class support [Lupus]
+//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
+//= Fixed possible EXP abuse [Lupus]
+//= 1.5 Now saves/restores all quest skills [Lupus]
+//= 1.6 Merged back JFunc [Lupus] 1.6a typos
+//= 1.7 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
+//=	No longer uses function "F_ToHigh"
+//= 1.8 Added Quest Log commands. [L0ne_W0lf]
+//============================================================
+
+moc_prydb1,39,129,2	script	Thief Guide	69,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Assassin_Cross || ADVJOB == Job_Stalker)) {
+		if (ADVJOB == Job_Assassin_Cross || ADVJOB == Job_Stalker) {
 			if (Class == Job_Novice_High) {
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Huh? Do I know you? It's creepy that you seem so familiar. You don't have a twin, do you?";
 				next;
 				if (getskilllv("NV_BASIC") < 9) {
-					mes "[Thief Guildsman]";
+					mes "[Thief Guide]";
 					mes "What, do you want to be a Thief? I'm sorry, but you look like you need more training.";
 					next;
-					mes "[Thief Guildsman]";
+					mes "[Thief Guide]";
 					mes "Take your time and learn all the Basic Skills, will you? Well then, see you later~!";
 					close;
 				}
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Well, I got this feeling like you've been through a lifetime of fighting, so I'm promoting you to a Thief right this minute. I better give you tough guys what you want...";
 				next;
 				skill 143,0,0;
@@ -36,202 +46,315 @@ moc_prydb1,39,129,2	script	Thief Guildsman	69,{
 				skill 150,1,0;
 				skill 151,1,0;
 				skill 152,1,0;
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Since you've become a Thief, live as a Thief. Now, go for it! Next~";
 				close;
 			}
-			mes "[Thief Guildsman]";
-			if (Sex == 1) {
-				mes "Hey, dude.";
-			} else {
-				mes "Hey, baby~";
+			else {
+				mes "[Thief Guide]";
+				if (sex)
+					mes "Hey, dude.";
+				else
+					mes "Hey, baby~";
+				close;
 			}
-			close;
 		}
-		mes "[Thief Guildsman]";
-		if (Sex == 1) {
-			mes "Hey, dude.";
-		} else {
-			mes "Hey, baby~";
+		else {
+			mes "[Thief Guide]";
+			if (sex)
+				mes "Hey, dude.";
+			else
+				mes "Hey, baby.";
+			mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
+			close;
 		}
-		mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
-		close;
 	}
-	if (Class == Job_Baby_Thief || Class == Job_Thief || Class == Job_Thief_High) {
-		mes "[Thief Guildsman]";
-		mes "Hey~ if you have any trouble, get it out to me anytime, huh?";
+	if (BaseJob == Job_Thief) {
+		mes "[Thief Guide]";
+		mes "If you have a problem, feel free to speak to me anytime, alright?";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
-		mes "[Thief Guildsman]";
+	else if (BaseJob != Job_Novice && BaseJob != Job_Thief) {
+		mes "[Thief Guide]";
 		mes "What the heck...?";
-		switch (Class) {
-		case Job_Swordman:
+		switch(Class) {
+		case 1:
 			mes "Huh.";
 			mes "Now, that's";
 			mes "a big sword.";
 			next;
-			mes "[Thief Guildsman]";
+			mes "[Thief Guide]";
 			mes "So...";
 			mes "Trying to make";
 			mes "up for something";
 			mes "...Buddy?";
-			close;
-		case Job_Mage:
+			break;
+		case 2:
 			mes "What's a Mage doin' here? Shouldn't you be doing card tricks elsewhere? Oh well, it's a free country...";
 			next;
-			mes "[Thief Guildsman]";
+			mes "[Thief Guide]";
 			mes "Oh wait,";
 			mes "it's not...";
 			mes "Get outta here!";
-			close;
-		case Job_Archer:
+			break;
+		case 3:
 			mes "Man, shouldn't you";
 			mes "Archers be playing";
 			mes "in the forest";
 			mes "or something?";
-			close;
-		case Job_Merchant:
+			break;
+		case 4:
+			mes "You know we all steal for a living, right? What are you doing in this kinda place, Acolyte?";
+			break;
+		case 5:
 			mes "You're a Merchant,";
 			mes "right? Why are you";
 			mes "walking into a den";
 			mes "of Thieves?!";
 			next;
-			mes "[Thief Guildsman]";
+			mes "[Thief Guide]";
 			mes "It's like you're begging";
 			mes "us to steal from you!";
 			mes "Come on, hurry and";
 			mes "get outta here~";
-			close;
-		case Job_Acolyte:
-			mes "You know we all steal for a living, right? What are you doing in this kinda place, Acolyte?";
-			close;
-		case Job_Assassin:
-			mes "Didn't you use to be one of us?! Man, you changed. You seem real dangerous now...";
-			close;
-			close;
-		case Job_Rogue:
-			mes "Man, you got real cool all of a sudden! You must have some skills I can only dream of!";
-			close;
-			close;
-		case Job_Priest:
+			break;
+		case 8:
 			mes "Oh my God...";
 			mes "Am I dying?";
 			next;
-			mes "[Thief Guildsman]";
+			mes "[Thief Guide]";
 			mes "Why else would a Priest come here? I guess I better start confessing all of my misdeeds.";
 			close;
+		case 12:
+			mes "Didn't you use to be one of us?! Man, you changed. You seem real dangerous now...";
+			close;
+		case 17:
+			mes "Man, you got real cool all of a sudden! You must have some skills I can only dream of!";
+			close;
 		}
 		next;
-		if (Sex == 1) {
-			mes "Hey, dude.";
-		}
-		else {
-			mes "Hey, baby~";
-		}
-		mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
+		mes "[Thief Guide]";
+		mes "*Sigh* Look, there's really no need for you to be in this kind of place. You oughta go where you ought to go.";
 		close;
 	}
-	if (Class == Job_Baby || Class == Job_Novice) {
-		mes "[Thief Guildsman]";
-		if (Sex == 1) {
-			mes "Ehh... Seems like a beloved son of a rich family, but why are you here in this dirty place?";
-		}
-		else {
-			mes "Ehh... Seems like a beloved daughter of a rich family, but why are you here in this dirty place?";
+	if (job_thief_q == 3 && countitem(1069) > 0 || countitem(1070) > 0) {
+		mes "[Thief Guide]";
+		mes "Hmmm?";
+		mes "You gathered Mushrooms for";
+		mes "the Thief test, right?";
+		next;
+		mes "[Thief Guide]";
+		mes "Here, talk to the other guy right next to me. He's the one in charge of checking your Mushrooms.";
+		close;
+	}
+	else if (job_thief_q == 3) {
+		mes "[Thief Guide]";
+		mes "So how was the";
+		mes "Mushroom Farm?";
+		mes "Have any fun?";
+		next;
+		if (select("Yeah, kinda Cool.:It was horrible.") == 1) {
+			mes "[Thief Guide]";
+			mes "Heh heh! That's a good attitude. In our line of work, you gotta enjoy getting your hands dirty, one way or another.";
+			close;
 		}
+		mes "[Thief Guide]";
+		mes "Yeah? I've been there too, so I can see why that place isn't everyone's cup of tea. Still, being a Thief isn't all glamour and trendy night life.";
+		close;
+	}
+	if (job_thief_q == 2) {
+		mes "[Thief Guide]";
+		mes "Hey, whaddya doin' here? Aren't you supposed to be gathering Mushrooms? Or did you need it explained to you again?";
 		next;
-		switch (select("I want to be a Thief.:Nothing.")) {
-		case 1:
-			if (THF_Q == 0) {
-				mes "[Thief Guildsman]";
-				mes "Well, are you that proud of it? You're telling me so proudly that you want to be a Thief! Why don't you go to all the villages and advertise yourself for being a thief?";
-				mes "'Ha ha ha! Go put up a banner that says 'I will be a proud thief who steals other people's stuff.'";
+		if  (select("Yes.:No, that's okay.") == 1) {
+			mes "[Thief Guide]";
+			mes "*Sigh* Well, there's always one in the bunch. Alright, listen carefully.";
+			next;
+			mes "[Thief Guide]";
+			mes "Alright, for your test, you gotta steal Mushrooms from a farm. Don't worry, the guy who owns the farm deserves to be robbed.";
+			next;
+			mes "[Thief Guide]";
+			mes "Anyway, you gotta gather two kinds of Mushrooms: ^0000FFOrange Net Mushrooms^000000 and ^0000FFOrange Gooey Mushrooms^000000.";
+			next;
+			mes "[Thief Guide]";
+			mes "Be careful, since there are monsters are the farm that are there to protect the Mushrooms. So this will be no walk in the park.";
+			next;
+			mes "[Thief Guide]";
+			mes "When you come back here after gathering Mushrooms, you'll be graded on the Mushrooms you've collected.";
+			next;
+			mes "[Thief Guide]";
+			mes "Each Orange Net Mushroom gets you 3 points, and you get 1 point for each Orange Gooey Mushroom. You need a total of 25 points to pass the test.";
+			next;
+			mes "[Thief Guide]";
+			mes "Go outside and keep going ahead toward the Eastern Field of the Pyramids. Then you will see one of our comrades between two columns.";
+			next;
+			mes "[Thief Guide]";
+			mes "Speak to that guy, and he'll take you to the farm through the backdoor.";
+			next;
+			mes "[Thief Guide]";
+			mes "On that field, I think his coordinates are '^FF0000141, 125^000000.' Just type ^3355FF/where^000000 in the right side of your chat box to check your present coordinates.";
+			close;
+		}
+		mes "[Thief Guide]";
+		mes "Huh. For a second there, I thought you had something really important to tell me.";
+		close;
+	}
+	mes "[Thief Guide]";
+	if (job_thief_q == 0) {
+		mes "What brings you down";
+		mes "here to this rathole?";
+	}
+	else {
+		mes "Ah...";
+		mes "You came back.";
+		mes "Are you sure you're";
+		mes "ready to try again?";
+	}
+	next;
+	if (select("Hey, I came here to be a Thief!:Nah, I'm just looking around.") == 1) {
+		if (job_thief_q == 0) {
+			mes "[Thief Guide]";
+			mes "Heh, I like your confidence. Still, you know being a Thief isn't all what it's cracked up to be.";
+			next;
+			mes "[Thief Guide]";
+			mes "Still...";
+			mes "Do you really";
+			mes "want to be";
+			mes "a Thief?";
+			next;
+			switch(select("Yeah.:No, just wasting your time.:Why did you become a Thief?")) {
+			case 1:
+				mes "[Thief Guide]";
+				mes "Really...";
+				break;
+			case 2:
+				mes "[Thief Guide]";
+				mes "Yeah...";
+				mes "I can see that.";
+				break;
+			case 3:
+				mes "[Thief Guide]";
+				mes "Me...?";
+				mes "I had no choice at the time. It was either steal or starve. But it's not like I need to give you my life story.";
+				break;
+			}
+			next;
+			mes "[Thief Guide]";
+			mes "So do you want to";
+			mes "apply to become";
+			mes "a Thief or not?";
+			next;
+			switch(select("Yes, I will.:I'm too scared to be a Thief!")) {
+			case 1:
+				mes "[Thief Guide]";
+				mes "Alright, tell";
+				mes "me your name.";
 				next;
-				mes "[Thief Guildsman]";
-				mes "Do you want to be a thief so badly?";
+				mes "[Thief Guide]";
+				mes "" + strcharinfo(0) + "?";
+				mes "What kind of name is " + strcharinfo(0) + "? Anyway, give me a second.";
+				set job_thief_q,1;
 				next;
-				switch (select("Yes.:No.:How about you?")) {
+				mes "[Thief Guide]";
+				mes "Alright, your registration has been processed. Okay, you can begin your test if you're ready.";
+				next;
+				switch(select("Yeah, I'm ready.:No, I'm not ready yet.")) {
 				case 1:
-					mes "[Thief Guildsman]";
-					mes "Well, are you that proud of it? You're telling me so proudly that you want to be a Thief! Why don't you go to all the villages and advertise yourself for being a thief?";
-					mes "'Ha ha ha! Go put up a banner that says 'I will be a proud thief who steals other people's stuff.'";
-					next;
 					break;
 				case 2:
-					mes "[Thief Guildsman]";
-					mes "Then why are you here? Do you think you can become a thief so easily?";
-					next;
-					break;
-				case 3:
-					mes "[Thief Guildsman]";
-					mes "Eh..? me? me?";
-					mes "Well... I just fit well to being a thief... characteristically... I don't mind this silly matter.";
-					next;
-					break;
-				}
-				mes "[Thief Guildsman]";
-				mes "Anyway, in the outside world, never say that you want to be a Thief!!";
-				next;
-				mes "[Thief Guildsman]";
-				mes "So, do you want to apply for being a Thief?";
-				next;
-				if (select("Yes, I do.:No.") == 1) {
-					mes "[Thief Guildsman]";
-					mes "Alright, tell me your name. Huh? What?";
-					mes "" + strcharinfo(0) + ". " + strcharinfo(0) + ", right...?";
-					next;
-					if (getskilllv("NV_BASIC") < 9) {
-						mes "[Thief Guildsman]";
-						mes "I can see your strong will to become a Thief......";
-						mes "But only with your will, you cannot make it in a real fight, can you? So go and reach at least Basic Skill Level 9.";
-						close;
-					}
-					mes "[Thief Guildsman]";
-					mes "Alright. I looked at your Felony Record, and you seem to have a very interesting history. You might have what it takes to be a Thief.";
-					mes "" + strcharinfo(0) + ". I now decree that you have passed this interview. Good work!";
-					set THF_Q,1;
-					next;
-					mes "[Thief Guildsman]";
-					mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
-					mes "If you want to become a Thief, ask the guy next to me.";
+					mes "[Thief Guide]";
+					mes "Not ready?";
+					mes "How can you";
+					mes "not be ready?!";
 					close;
 				}
-				mes "[Thief Guildsman]";
-				mes "Well... do what you want to do~ Go your way~";
+				break;
+			case 2:
+				mes "[Thief Guide]";
+				mes "Too scared?!?";
+				mes "Hahahahahahah!";
+				mes "Oh, please...!";
+				mes "That's hilarious!";
 				close;
 			}
-			if (THF_Q == 1) {
-				mes "[Thief Guildsman]";
-				mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
-				mes " If you want to become a Thief, ask the sharp-eyed guy next to me.";
-				close;
-			}
-			mes "[Thief Guildsman]";
-			mes "Oh, before I let you go... ...did you take any mushrooms?";
-			mes "... ...It was a joke.";
-			mes "You don't need to do a test, and if you want to jobchange, you can do it directly.";
+		}
+		else {
+			mes "[Thief Guide]";
+			mes "Okay...";
+			mes "Give me";
+			mes "one second.";
 			next;
-			mes "[Thief Guildsman]";
-			mes "In short it was just a joke.";
-			mes "Ha ha ha ha ha!!";
+		}
+		mes "[Thief Guide]";
+		mes "Your name is...";
+		mes strcharinfo(0) + "? Um, where is it? Ah, here it is. Let's see...";
+		next;
+		mes "[Thief Guide]";
+		if (getskilllv("NV_BASIC") < 9) {
+			mes "Isn't that cute? I can see you're ambitious, but you gotta learn all of the Basic Skills before you can become a Thief.";
 			close;
+		}
+		mes "Alright. I looked at your Felony Record, and you seem to have a very interesting history. You might have what it takes to be a Thief.";
+		next;
+		mes "[Thief Guide]";
+		mes "Because I feel like it, I now decree that you have passed this interview. Good work!";
+		set job_thief_q,2;
+		setquest 1013;
+		next;
+		mes "[Thief Guide]";
+		mes "Now, your actual abilities will need to be tested. Do you know anything about the test?";
+		next;
+		switch(select("Yes, I do.:Sorry, I don't.")) {
+		case 1:
+			mes "[Thief Guide]";
+			mes "Oh yeah? Well, this makes things a lot easier.";
+			break;
 		case 2:
-			mes "[Thief Guildsman]";
-			mes "You know you cannot be a thief without an application.....";
-			mes "What's on your mind..?";
-			close;
+			mes "[Thief Guide]";
+			mes "Alright, let me inform you then. Listen carefully. This test decides if you are worthy of becoming a Thief.";
+			next;
+			mes "[Thief Guide]";
+			mes "You will be sneaking to Shibu's Farm. He is the worst Merchant, in terms of character, in Morroc.";
+			next;
+			mes "[Thief Guide]";
+			mes "Alright, for your test, you gotta steal Mushrooms from his farm. Don't worry, that guy deserves to be robbed.";
+			next;
+			mes "[Thief Guide]";
+			mes "Anyway, you gotta gather two kinds of Mushrooms: ^0000FFOrange Net Mushrooms^000000 and ^0000FFOrange Gooey Mushrooms^000000.";
+			next;
+			mes "[Thief Guide]";
+			mes "Be careful, since there are monsters are the farm that are there to protect the Mushrooms. So this will be no walk in the park.";
+			next;
+			mes "[Thief Guide]";
+			mes "When you come back here after gathering Mushrooms, you'll be graded on the Mushrooms you've collected.";
+			next;
+			mes "[Thief Guide]";
+			mes "Each Orange Net Mushroom gets you 3 points, and you get 1 point for each Orange Gooey Mushroom. You need a total of 25 points to pass the test.";
+			next;
+			mes "[Thief Guide]";
+			mes "Go outside and keep going ahead toward the Eastern Field of the Pyramids. Then you will see one of our comrades between two columns.";
+			next;
+			mes "[Thief Guide]";
+			mes "Speak to that guy, and he'll take you to the farm through the backdoor.";
+			next;
+			mes "[Thief Guide]";
+			mes "On that field, I think his coordinates are '^FF0000141, 125^000000.' Just type ^3355FF/where^000000 in the right side of your chat box to check your present coordinates.";
 		}
+		next;
+		mes "[Thief Guide]";
+		mes "Don't forget to make plans and prepare yourself before you go inside the Mushroom Farm. Move as quickly as you can and try not to get killed, alright?";
+		close;
 	}
+	close;
 }
 
 moc_prydb1,42,133,2	script	Comrade	118,{
-	if (Class == Job_Baby_Thief || Class == Job_Thief || Class == Job_Thief_High) {
+	if (BaseJob == Job_Thief) {
 		mes "[Brad]";
-		mes "I don't have any special events now. So go on your way and come back later.";
+		mes "We don't have any special events yet. Come some other time when there's news, alright?";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
+	else if (BaseJob != Job_Novice && BaseJob != Job_Thief) {
 		mes "[Comrade]";
 		mes "Um...";
 		mes "You don't look";
@@ -242,81 +365,156 @@ moc_prydb1,42,133,2	script	Comrade	118,{
 		mes "you doing here anyway?";
 		close;
 	}
-	if (THF_Q == 0) {
+	if (job_thief_q == 0 || job_thief_q == 1) {
 		mes "[Comrade]";
-		mes "What's the matter? If you want to be a Thief, speak to the woman beside me.";
+		mes "What's the matter? If you want to be a Thief, speak to the girl beside me.";
 		close;
 	}
-	if (THF_Q == 1) {
-		mes "[Thief Guildsman]";
-		mes "Alright. You must have passed the job interview, huh?";
-		mes "Good. I'll accept you.";
-		mes "Let's begin the job-changing ceremony of our guild!";
+	else if (job_thief_q == 2) {
+		mes "[Comrade]";
+		mes "Did you pass the interview?";
+		mes "Then what are you waiting for?";
+		close;
+	}
+	else if (job_thief_q == 3) {
+		mes "[Comrade]";
+		mes "Ah, the guide told me about you. So, let me check your mushrooms...";
+		if (countitem(1069) == 0 && countitem(1070) == 0) {
+			next;
+			mes "[Comrade]";
+			mes "What the hell...";
+			mes "You don't have any Mushrooms at all! Go back and get them. Otherwise, you won't pass the test and become a Thief!";
+			close;
+		}
+		next;
+		set .@thief_item1,countitem(1069) * 3;
+		set .@thief_item2,countitem(1070);
+		set .@total_thief,.@thief_item1 + .@thief_item2;
+		set .@money_thief,((.@thief_item1 * 5) + (.@thief_item2 * 2)) + 200;
+		mes "[Comrade]";
+		if (countitem(1069) != 0) {
+			mes "First, let me check the Orange Net Mushrooms you got.";
+			mes "Huh, " + countitem(1069) + " of them.";
+		}
+		if (countitem(1070) != 0)
+			mes "Now I'll just check your Orange Gooey Mushrooms. That's " + countitem(1070) + " you gathered.";
+		next;
+		mes "[Comrade]";
+		mes "So that would";
+		mes "bring your total to...";
+		next;
+		mes "[Comrade]";
+		mes "Hmmm. " + .@total_thief + " degrees, multiplied by the speed of light, divided by the integral of pi times height plus the absolute value of politics...";
+		next;
+		mes "[Comrade]";
+		mes "Okay!";
+		mes "I got it.";
 		next;
-		mes "[Leader of Thief Guild 'E']";
-		mes "" + strcharinfo(0) + "...";
-		mes "'For those who are ready, the moonlight shall open the way. You are now one of us.'";
-		skill 143,0,1;
-		if(Class == Job_Baby){
-			jobchange Job_Baby_Thief;
-		} else {
-			jobchange Job_Thief;
+		mes "[Comrade]";
+		if (.@total_thief > 25) {
+			mes "You got more";
+			mes "than 25 points!";
+			mes "Awesome!";
+		}
+		else if (.@total_thief == 25) {
+			mes "Exactly 25 points!";
+			mes "You did it! Badass!";
+		}
+		else {
+			mes "Definitely less than the 25 points you need to pass. Go out there and get me more Mushrooms!";
+			close;
 		}
-		getitem 13041,1; //N_Main_Gauche
-		erasequest 1013;
 		next;
-		mes "[Leader of Thief Guild 'E']";
-		mes "'Congratulations on becoming a Thief!'";
-		mes "'From now, be an honorable representative of the Thief's Guild.'";
-		mes "'If you bring disgrace to our guild, you will be killed.'";
-		mes "'Anyway, I expect you to be a great Thief.'";
+		mes "[Comrade]";
+		mes strcharinfo(0) + "...";
+		mes "You have passed the official Thief Test. You are now one of us.";
+		if (countitem(1069) != 0) delitem 1069,countitem(1069); //Mushroom_Of_Thief_1
+		if (countitem(1070) != 0) delitem 1070,countitem(1070); //Mushroom_Of_Thief_2
+		callfunc "Job_Change",Job_Thief;
+		callfunc "F_ClearJobVar";
+		completequest 1013;
+		next;
+		mes "[Comrade]";
+		mes "Congratulations on becoming a Thief! From now, be an honorable representative of the Thief's Guild.";
+		next;
+		mes "[Comrade]";
+		mes "If you bring disgrace to our guild, you will be killed. I expect you to bring our comrades pride.";
 		next;
 		mes "[Brad]";
-		mes "*Ahem* Welcome to the Guild, comrade!";
-		mes "I'm Brad, and I'm in charge of human resources here.";
-		mes "I'm not sure for now but you'll have more chances to see me later on.";
+		mes "*Ahem* Welcome to the Guild, comrade! I'm Brad, and I'm in charge of human resources here.";
 		next;
 		mes "[Brad]";
-		mes "Okay, I've done what I can do to you, so go on your way. I'm a quite busy man.";
-		mes "Alright then, I'll see you around~";
+		mes "Here is a small subsidy for a Newbie like you. Spend it whereever you want. Alright then, I'll see you around~";
+		set zeny,zeny+.@money_thief;
 		close;
 	}
 }
 
 moc_ruins,141,125,3	script	Mr. Irrelevant	83,{
-	if (Class == Job_Baby_Thief || Class == Job_Thief) {
+	if (BaseJob == Job_Thief) {
 		mes "[Mr. Irrelevant]";
 		mes "Ah, I see that you are now a Thief. I always knew you'd join us.";
 		next;
 		mes "[Mr. Irrelevant]";
-		mes "Why don't you leave this place?";
+		mes "Stealing from a Mushroom farm is too easy for you now. You should build up your skills and master our craft.";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
-		set .@rand,rand(1,5);
-		switch(.@rand){
-			mes "[Mr. Irrelevant]";
+	else if (BaseJob != Job_Novice && BaseJob != Job_Thief) {
+		mes "[Mr. Irrelevant]";
+		switch(rand(4)) {
 		case 1:
-			mes "Today looks like a good day to go to the pyramids and hunt with some of my friends.";
-			close;
-		case 2:
 			mes "I could use a good, hard drink.";
 			close;
-		case 3:
+		case 2:
 			mes "Gimme your money.";
 			next;
 			mes "[Mr. Irrelevant]";
 			mes "Kidding, I'm off the clock.";
 			close;
-		case 4:
+		case 3:
 			mes "WHO YOU CALLING A PSYCHO?!?!";
 			close;
-		case 5:
+		case 4:
 			mes "I've got nothing to say to you. Would you mind leaving me alone?";
 			close;
+		default:
+			mes "Today looks like a good day to go to the pyramids and hunt with some of my friends.";
+			close;
+		}
+	}
+	if (job_thief_q == 3) {
+		mes "[Mr. Irrelevant]";
+		mes "Hahahahaha~!";
+		mes "You haven't";
+		mes "passed the test yet?";
+		mes "Alright, I'll let you in...";
+		close2;
+		switch(rand(5)) {
+		case 1: warp "job_thief1",228,106; end;
+		case 2: warp "job_thief1",38,50; end;
+		case 3: warp "job_thief1",66,331; end;
+		case 4: warp "job_thief1",196,331; end;
+		default: warp "job_thief1",309,234; end;
 		}
 	}
-	if (THF_Q == 1) {
+	else if (job_thief_q == 2) {
+		mes "[Mr. Irrelevant]";
+		mes "Hmm...";
+		mes "You've come to take the test, right? I can see in your eyes that you know something.";
+		next;
+		mes "[Mr. Irrelevant]";
+		mes "Your name is " + strcharinfo(0) + "? Ah, it's on the list. Alright, I'll let you into the Mushroom Farm , but I can't guarantee your safety...";
+		close2;
+		set job_thief_q,3;
+		switch(rand(5)) {
+		case 1: warp "job_thief1",228,106; end;
+		case 2: warp "job_thief1",38,50; end;
+		case 3: warp "job_thief1",66,331; end;
+		case 4: warp "job_thief1",196,331; end;
+		default: warp "job_thief1",309,234; end;
+		}
+	}
+	else if (job_thief_q == 1) {
 		mes "[Mr. Irrelevant]";
 		mes "There is this strange smell coming from... You. Now why would that be?";
 		close;
@@ -327,4 +525,15 @@ moc_ruins,141,125,3	script	Mr. Irrelevant	83,{
 	mes "[Mr. Irrelevant]";
 	mes "You can get more information in the Underground Room in the Pyramid 1 BF.";
 	close;
-}
+}
+
+// Monsters
+//============================================================
+job_thief1,0,0,0,0	monster	Orange Mushroom	1182,180,0,0,0
+job_thief1,0,0,0,0	monster	Fabre	1184,50,0,0,0
+job_thief1,0,0,0,0	monster	Chonchon	1183,50,0,0,0
+job_thief1,0,0,0,0	monster	Spore	1014,30,0,0,0
+
+//============================================================
+// mapflag
+//============================================================

+ 155 - 299
npc/re/jobs/1-1/acolyte.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.2
+//= 1.1
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -11,11 +11,10 @@
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
 //= 1.1 Added back the npcs used for the priest quest.
-//= 1.2 Added Baby job change support. [Masao]
 //============================================================ 
 prt_church,184,41,4	script	Cleric#aco	60,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_High_Priest || ADVJOB == Job_Champion)) {
+		if (ADVJOB == Job_High_Priest || ADVJOB == Job_Champion) {
 			if (Class == Job_Novice_High) {
 				mes "[Father Mareusis]";
 				mes "Ah, I sense you have endured";
@@ -39,74 +38,62 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 				mes "wish you luck on your";
 				mes "new life's journey.";
 				next;
-				skill 143,0,1;
+				skill 143,0,0;
 				jobchange Job_Acolyte_High;
 				skill 156,1,0;
 				mes "[Father Mareusis]";
 				mes "Now, venture forth and seek those who need your help. May God light your path.";
 				close;
+			}else{
+				mes "[Father Mareusis]";
+				mes "Now, venture forth to seek people who need your help. May God enlighten your way.";
+				close;
 			}
+		}else{
 			mes "[Father Mareusis]";
-			mes "Now, venture forth to seek people who need your help. May God enlighten your way.";
+			mes "I sense that you have endured a past life experience. You must have learned many things before entering Valhalla.";
+			next;
+			mes "[Father Mareusis]";
+			mes "However, I can tell that you are not suited to be an Acolyte. Please remember who you were in your past life and find your path.";
 			close;
 		}
-		mes "[Father Mareusis]";
-		mes "I sense that you have endured a past life experience. You must have learned many things before entering Valhalla.";
-		next;
-		mes "[Father Mareusis]";
-		mes "However, I can tell that you are not suited to be an Acolyte. Please remember who you were in your past life and find your path.";
-		close;
 	}
 	mes "[Father Mareusis]";
 	mes "What is it that you seek?";
 	next;
-	switch (select("Father, I want to be a Acolyte.:Acolyte Requirements.:Just looking around.")) {
+	switch(select("Change your job to acolyte.:Ask the requirements to be an acolyte.:Quit it.")) {
 	case 1:
-		if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
+		if(Class != Job_Novice) {
 			mes "[Father Mareusis]";
-			mes "Are you feeling okay today? I can tell by your attire that you are already an Acolyte. You're not joking around, are you?";
+			if(Class == Job_Acolyte) {
+				mes "Are you feeling okay today? I can tell by your attire that you are already an Acolyte. You're not joking around, are you?";
+			}else{
+				mes "I'm sorry but it seems you already have your own job, aren't you?";
+			}
 			close;
-		}
-		if ((Class != Job_Baby) && (Class != Job_Novice)) {
+		}else{
 			mes "[Father Mareusis]";
-			mes "I'm sorry, but we can only accept Novices as applicants for the job change to Acolyte.";
-			close;
-		}
-		mes "[Father Mareusis]";
-		mes "Do you truly wish to become a servant of God?";
-		mes "Let's see whether you are ready for it or not... Hmm...";
-		next;
-		if (getskilllv("NV_BASIC") < 9) {
+			mes "Do you truly wish to become a servant of God?";
+			mes "Let's see whether you are ready for it or not... Hmm...";
+			next;
+			if (getskilllv("NV_BASIC") < 9) {
+				mes "[Father Mareusis]";
+				mes "Oh my?! You haven't accomplished the basic practice yet?! You have a long way to go! Come again after increasing your job level!";
+				close;
+			}
 			mes "[Father Mareusis]";
-			mes "Good Lord! Haven't you accomplished the Basic Training yet?! It's important that you finish that!";
+			mes "Hmm... your job level is enough...";
+			mes "Good. Now I will give you the qualification to become an Acolyte.";
 			next;
 			mes "[Father Mareusis]";
-			mes "You should have trained more! Go back and make sure you reach Novice Job Level 9 and learn all of the Basic Skills!";
-			close;
-		}
-		mes "[Father Mareusis]";
-		mes "Hmm... your job level is high enough and you've proven your qualification.";
-		next;
-		mes "[Father Mareusis]";
-		mes "I am proud to say that you are now ready to become an Acolyte!";
-		next;
-		skill 143,0,1;
-		if(Class == Job_Baby){
-			jobchange Job_Baby_Acolyte;
-		} else {
+			mes "Always remember to be thankful to God, who takes care of us all the time. In chaos and times of difficulty, face your hardships with unwavering faith.";
 			jobchange Job_Acolyte;
+			getitem 1545,1;	// N_Mace
+			next;
+			mes "[Father Mareusis]";
+			mes "Lastly, I want to sincerely congratulate you on persevering through your trial of penance.";
+			close;
 		}
-		set ACO_Q,0;
-		getitem 1545,1; //N_Mace
-		mes "[Father Mareusis]";
-		mes "Always remember to be thankful to God, who is taking care of us all the time.";
-		next;
-		mes "[Father Mareusis]";
-		mes "Always use your gifts to serve Him by helping others. In chaos and times of difficulty, face your hardships with unwavering faith.";
-		next;
-		mes "[Father Mareusis]";
-		mes "Lastly, I want to sincerely congratulate you on persevering through your trial of penance.";
-		close;
 	case 2:
 		mes "[Father Mareusis]";
 		mes "Do you wish to become an Acolyte?";
@@ -117,7 +104,7 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 		mes "This is the most basic thing to do, so you need to regard it as the way of training yourself.";
 		next;
 		mes "[Father Mareusis]";
-		mes "When you think you fulfilled this requirement I've asked of you. As long as your desire to serve God and others is sincere, you will be able to make it.";
+		mes "When you think you fulfilled this requirement, then come back to me again. Then you will have a holy job in which you can spread God's will.";
 		close;
 	case 3:
 		close;
@@ -125,18 +112,17 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 }
 
 prt_fild03,365,255,2	script	Ascetic#aco	89,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 6) {
-			mes "[Father Rubalkabara]";
+	mes "[Father Rubalkabara]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 6) {
 			mes "Please take care. They should know that you've met me by the time you arrive at the Prontera Sanctuary.";
 			next;
 			mes "[Father Rubalkabara]";
 			mes "I've sent a carrier pigeon with a message. I hope it will arrive there safely...";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 2) {
-				mes "[Father Rubalkabara]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 2) {
 				mes "Oh...? You must be the one who aspires to become an Acolyte. I've already received news from the Sanctuary that you might be coming.";
 				next;
 				mes "[Father Rubalkabara]";
@@ -156,207 +142,133 @@ prt_fild03,365,255,2	script	Ascetic#aco	89,{
 				next;
 				mes "[Father Rubalkabara]";
 				mes "Farewell.";
+				close2;
 				savepoint "prt_fild03",361,255;
-				set ACO_Q,6;
-				close;
+				set job_acolyte_q,6;
+				end;
 			}
-			mes "[Father Rubalkabara]";
-			mes "Oh...";
-			mes "Are you one of the";
-			mes "Acolyte applicants...?";
-			mes "Let's see...";
-			next;
-			mes "[Father Rubalkabara]";
-			mes "Your name is " + strcharinfo(0) + "?";
-			mes "I don't think your name";
-			mes "is on my list. Hmmm...";
-			next;
-			mes "[Father Rubalkabara]";
-			mes "Why don't you go back to the Prontera Sanctuary and check again?";
-			close;
-		}
-		mes "[Father Rubalkabara]";
-		mes "Huh? What brings you here? This is a very dangerous place for a Novice like yourself!";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Father Rubalkabara]";
-				mes "Ah yes, so you're the young Acolyte who wishes to become a Priest.";
+			else {
+				mes "Oh...";
+				mes "Are you one of the";
+				mes "Acolyte applicants...?";
+				mes "Let's see...";
 				next;
 				mes "[Father Rubalkabara]";
-				mes "I've received the message from Bishop Paul. Since you made the pilgrimage, I hope you accomplish your goal of becoming a Priest.";
+				mes "Your name is " + strcharinfo(0) + "?";
+				mes "I don't think your name";
+				mes "is on my list. Hmmm...";
 				next;
 				mes "[Father Rubalkabara]";
-				mes "Also, if you have a chance, please visit this abbey again. It's a sacred place for our Church.";
-				next;
-				mes "[Father Rubalkabara]";
-				mes "Well then, please head to your next destination for your pilgrimage. Be safe in your travels.";
-				savepoint "prt_fild03",361,255;
-				set ACO_Q2,2;
+				mes "Why don't you go back to the Prontera Sanctuary and check again?";
 				close;
 			}
-			if (ACO_Q2 == 2) {
-				mes "[Father Rubalkabara]";
-				mes "Please be hurry to the next destination for your pilgrimage. I hope you become a Priest soon.";
-				close;
-			}
-			mes "[Father Rubalkabara]";
-			mes "May I ask why you have returned? Please go back and continue your religious practice.";
+		}
+		else {
+			mes "Huh? What brings you here? This is a very dangerous place for a Novice like yourself!";
 			close;
 		}
-		mes "[Father Rubalkabara]";
-		mes "I have no idea what brought you here, but please excuse me.";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Father Rubalkabara]";
-		mes "Greetings.";
-		next;
-		mes "[Father Rubalkabara]";
-		mes "Welcome to the Deep. Feel free to sit and contemplate God's message with me. This place is beautiful, even if danger accompanies its sense of serenity...";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_FatherRub";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Greetings.";
+			next;
+			mes "[Father Rubalkabara]";
+			mes "Welcome to the Deep. Feel free to sit and contemplate God's message with me. This place is beautiful, even if danger accompanies its sense of serenity...";
+			close;
+		}
+		else {
+			mes "Oh ho...";
+			mes "Have you come into the Deep here for training? Or are you just a Wanderer?";
+			next;
+			mes "[Father Rubalkabara]";
+			mes "Whoever you are, please take care of yourself. The monsters in here are shockingly strong, contrary to their cute appearance.";
+			close;
+		}
 	}
-	mes "[Father Rubalkabara]";
-	mes "Oh ho...";
-	mes "Have you come into the Deep here for training? Or are you just a Wanderer?";
-	next;
-	mes "[Father Rubalkabara]";
-	mes "Whoever you are, please take care of yourself. The monsters in here are shockingly strong, contrary to their cute appearance.";
-	close;
 }
 
-moc_fild07,41,355,4	script	Ascetic#2	95,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 6) {
-			mes "[Mother Marthilda]";
+moc_fild07,41,355,4	script	Ascetic#2aco	95,{
+	mes "[Mother Mathilda]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 7) {
 			mes "I will send a carrier pigeon to the Prontera Sanctuary. When you return, the Priest there should already have received my message.";
 			next;
-			mes "[Mother Marthilda]";
+			mes "[Mother Mathilda]";
 			mes "I will pray to God, and hope that you become an Acolyte soon.";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 3) {
-				mes "[Mother Marthilda]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 3) {
 				mes "Ah, you must be one of the Acolyte applicants. I sincerely welcome you.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "What is your name? " + strcharinfo(0) + "? Let's see... Ah, you're on my list.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "I will send a message to the Sanctuary confirming that you, " + strcharinfo(0) + " visited me and completed your penance.";
 				next;
-				mes "[Mother Marthilda]";
+				mes "[Mother Mathilda]";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
+				close2;
 				savepoint "moc_fild07",35,355;
-				set ACO_Q,7;
-				close;
-			}
-			mes "[Mother Marthilda]";
-			mes "Ah...!";
-			mes "You must be one";
-			mes "of the Acolyte applicants.";
-			mes "I sincerely welcome you.";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Now, what is your name?";
-			mes "" + strcharinfo(0) + "? Let's see...";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Hmm...";
-			mes "It seems your name";
-			mes "is not on my list...";
-			next;
-			mes "[Mother Marthilda]";
-			mes "Perhaps you should return to the Prontera Sanctuary and check the destination for your penance trial once again.";
-			close;
-		}
-		mes "[Mother Marthilda]";
-		mes "...";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Mother Marthilda]";
-				mes "Hmm...";
-				mes "It seems you're";
-				mes "training to become";
-				mes "a Priest.";
-				next;
-				mes "[Mother Marthilda]";
-				mes "However, at this point in your pilgrimage, I am not the person that you should be visiting.";
-				next;
-				mes "[Mother Marthilda]";
-				mes "Perhaps you should ask Bishop Paul or Sister Cecilia once again. Well, may God be with you...";
-				close;
+				set job_acolyte_q,7;
+				end;
 			}
-			if (ACO_Q2 == 2) {
-				mes "[Mother Marthilda]";
-				mes "Ah, are you";
-				mes "a Priest trainee...?";
-				mes "Welcome!";
+			else {
+				mes "Ah...!";
+				mes "You must be one";
+				mes "of the Acolyte applicants.";
+				mes "I sincerely welcome you.";
 				next;
-				mes "[Mother Marthilda]";
-				mes "We Priests are obliged to spread the message of God to";
-				mes "the peoples of the Earth.";
+				mes "[Mother Mathilda]";
+				mes "Now, what is your name?";
+				mes "" + strcharinfo(0) + "? Let's see...";
 				next;
-				mes "[Mother Marthilda]";
-				mes "After you become a Priest, your travels may take you to the Morroc Pyramids. I hope that you may release the Undead there from the evil to which they are bound.";
+				mes "[Mother Mathilda]";
+				mes "Hmm...";
+				mes "It seems your name";
+				mes "is not on my list...";
 				next;
-				mes "[Mother Marthilda]";
-				mes "Well then...";
-				mes "I shall pray to";
-				mes "God for safety";
-				mes "on your journey.";
-				savepoint "moc_fild07",35,355;
-				set ACO_Q2,3;
-				close;
-			}
-			if (ACO_Q2 == 3) {
-				mes "[Mother Marthilda]";
-				mes "Please leave soon, and";
-				mes "continue your training.";
+				mes "[Mother Mathilda]";
+				mes "Perhaps you should return to the Prontera Sanctuary and check the destination for your penance trial once again.";
 				close;
 			}
-			mes "[Mother Marthilda]";
-			mes "May I ask you the reason you came back? Please continue your training.";
+		}
+		else {
+			mes "...";
 			close;
 		}
-		mes "[Mother Marthilda]";
-		mes "May God";
-		mes "be with you...";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Mother Marthilda]";
-		mes "Hello there~";
-		next;
-		mes "[Mother Marthilda]";
-		mes "How is your practice coming along? I certainly hope you're enjoying living in the grace of God.";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_MotherMart";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Hello there~";
+			next;
+			mes "[Mother Mathilda]";
+			mes "How is your practice coming along? I certainly hope you're enjoying living in the grace of God.";
+			close;
+		}
+		else {
+			mes "May God";
+			mes "be with you...";
+			close;
+		}
 	}
-	mes "[Mother Marthilda]";
-	mes "May God";
-	mes "be with you...";
-	close;
 }
 
-prt_fild00,208,218,6	script	Ascetic#3	98,{
-	if (Class == Job_Baby || Class == Job_Novice) {
-		if (ACO_Q == 8) {
-			mes "[Father Yosuke]";
+prt_fild00,208,218,6	script	Ascetic#3aco	98,{
+	mes "[Father Yosuke]";
+	if (BaseJob == Job_Novice) {
+		if (job_acolyte_q == 8) {
 			mes "What?";
 			next;
 			mes "[Father Yosuke]";
 			mes "Have you any more business with me?! You don't! Go back to the Sanctuary now!";
 			close;
 		}
-		if (ACO_Q != 0) {
-			if (ACO_Q == 4) {
-				mes "[Father Yosuke]";
+		if (job_acolyte_q != 0) {
+			if (job_acolyte_q == 4) {
 				mes "Hey.";
 				mes "Whatever you are,";
 				mes "you look like an";
@@ -375,104 +287,48 @@ prt_fild00,208,218,6	script	Ascetic#3	98,{
 				next;
 				mes "[Father Yosuke]";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
+				close2;
 				savepoint "prt_fild00",206,230;
-				set ACO_Q,8;
-				close;
-			}
-			mes "[Father Yosuke]";
-			mes "Hey.";
-			mes "You look like an Acolyte Applicant. Am I right?";
-			next;
-			mes "[Father Yosuke]";
-			mes "Not bad at all, you've made it all the way here from Prontera. So what's your name, kid?";
-			next;
-			mes "[Father Yosuke]";
-			mes "" + strcharinfo(0) + ", huh? Why isn't your name on my list?";
-			next;
-			mes "[Father Yosuke]";
-			mes "You probably made a mistake. Go back to the Santuary, and check with the Bishop.";
-			close;
-		}
-		mes "[Father Yosuke]";
-		mes "You...";
-		mes "Novice.";
-		mes "There something";
-		mes "you wanna tell me?";
-		close;
-	}
-	if (Class == Job_Baby_Acolyte || Class == Job_Acolyte) {
-		if (ACO_Q2 != 0) {
-			if (ACO_Q2 == 1) {
-				mes "[Father Yosuke]";
-				mes "Hmm...";
-				mes "A Priest trainee, eh?";
-				next;
-				mes "[Father Yosuke]";
-				mes "Well, you got the wrong person. If you're supposed to meet up with me at all, it'd be later.";
-				next;
-				mes "[Father Yosuke]";
-				mes "But that's your own fault.";
-				mes "Now, go back to Church, kid.";
-				close;
+				set job_acolyte_q,8;
+				end;
 			}
-			if (ACO_Q2 == 2) {
-				mes "[Father Yosuke]";
-				mes "Hmm...";
-				mes "A Priest trainee, eh?";
-				next;
-				mes "[Father Yosuke]";
-				mes "Well, you got the wrong person. If you're supposed to meet up with me at all, it'd be later.";
+			else {
+				mes "Hey.";
+				mes "You look like an Acolyte Applicant. Am I right?";
 				next;
 				mes "[Father Yosuke]";
-				mes "But that's your own fault. Go back to Church.";
-				close;
-			}
-			if (ACO_Q2 == 3) {
-				mes "[Father Yosuke]";
-				mes "Hmm.";
-				mes "A Priest";
-				mes "trainee, eh? ";
-				mes "Welcome.";
+				mes "Not bad at all, you've made it all the way here from Prontera. So what's your name, kid?";
 				next;
 				mes "[Father Yosuke]";
-				mes "I won't say";
-				mes "anything more.";
-				mes "Just devote your";
-				mes "life to God.";
+				mes "" + strcharinfo(0) + ", huh? Why isn't your name on my list?";
 				next;
 				mes "[Father Yosuke]";
-				mes "Now go back to church.";
-				mes "Hereby, the first of";
-				mes "your trials is now";
-				mes "completed.";
-				savepoint "prt_fild00",206,230;
-				set ACO_Q2,4;
+				mes "You probably made a mistake. Go back to the Santuary, and check with the Bishop.";
 				close;
 			}
-			if (ACO_Q2 == 4) {
-				mes "[Father Yosuke]";
-				mes "I told you to go back to church.";
-				mes "Or do you want to live with me here for the rest of your life...?";
-				close;
-			}
-			mes "[Father Yosuke]";
-			mes "Just go be a Priest. This isn't a playground for kids.";
+		}
+		else {
+			mes "You...";
+			mes "Novice.";
+			mes "There something";
+			mes "you wanna tell me?";
 			close;
 		}
-		mes "[Father Yosuke]";
-		mes "...Acolyte, you don't have any business with me here.";
-		close;
 	}
-	if (Class == Job_Baby_Priest || Class == Job_Priest) {
-		mes "[Father Yosuke]";
-		mes "Hey...";
-		next;
-		mes "[Father Yosuke]";
-		mes "If you like, come sit here with me and meditate the great truths. God's majesty is truly inspiring...";
-		close;
+	else if (BaseJob == Job_Acolyte) callfunc "F_FatherYos";
+	else {
+		if (BaseJob == Job_Priest) {
+			mes "Hey...";
+			next;
+			mes "[Father Yosuke]";
+			mes "If you like, come sit here with me and meditate the great truths. God's majesty is truly inspiring...";
+			close;
+		}
+		else {
+			mes "Do you have anything to say? Because unfortunately for you,";
+			mes "I don't any replies.";
+			close;
+		}
 	}
-	mes "[Father Yosuke]";
-	mes "Do you have anything to say? Because unfortunately for you,";
-	mes "I don't any replies.";
-	close;
-}
+}
+

+ 47 - 59
npc/re/jobs/1-1/archer.txt

@@ -3,20 +3,21 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Job Change to Archer Class
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
 //============================================================ 
-payon_in02,64,71,4	script	Archer Guildsman	85,{
+payon_in02,64,71,4	script	Archer Guildsman#archer	85,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Sniper || ADVJOB == Job_Clown || ADVJOB == Job_Gypsy)) {
+		if (Class == Job_Novice_High && (ADVJOB == Job_Sniper || ADVJOB == Job_Clown || ADVJOB == Job_Gypsy)) {
 			mes "[Archer Guildsman]";
 			mes "Hey, I know you.";
+			mes "You took this test";
+			mes "before, didn't you?";
 			next;
 			mes "[Archer Guildsman]";
 			mes "Ah, you must have been";
@@ -37,7 +38,7 @@ payon_in02,64,71,4	script	Archer Guildsman	85,{
 			mes "need to say anything else.";
 			mes "I know you'll make a great Archer...";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Archer_high;
 			skill 147,1,0;
 			skill 148,1,0;
@@ -45,97 +46,84 @@ payon_in02,64,71,4	script	Archer Guildsman	85,{
 			mes "Although there's no special";
 			mes "reward for you this time, I hope you understand. Take care of yourself.";
 			close;
+		}else{
+			mes "[Archer Guildsman]";
+			mes "Oh...?";
+			mes "Hey, what are";
+			mes "you doing here...?";
+			next;
+			mes "[Archer Guildsman]";
+			mes "I can tell that you're not cut out to be an Archer. It sort of feels like you're meant to do";
+			mes "something else...";
+			close;
 		}
-		mes "[Archer Guildsman]";
-		mes "Oh...?";
-		mes "Hey, what are";
-		mes "you doing here...?";
-		next;
-		mes "[Archer Guildsman]";
-		mes "I can tell that you're not cut out to be an Archer. It sort of feels like you're meant to do";
-		mes "something else...";
-		close;
 	}
 	mes "[Archer Guildsman]";
 	mes "Nice to meet you. How may I help you?";
 	next;
-	switch (select("I want to be an Archer.:I need the requirements, please.:Nothing, thanks.")) {
+	switch(select("I want to be an Archer.:I need the requirements, please.:Nothing, thanks.")) {
 	case 1:
-		if (Class == Job_Baby || Class == Job_Novice) {
+		if(Class != Job_Novice) {
 			mes "[Archer Guildsman]";
-			mes "You are..." + strcharinfo(0) + " right?";
+			if(Class == Job_Archer) {
+				mes "Haha, you are kidding me..";
+			}else{
+				mes "I feel sorry but only Novices can change their job.";
+				mes "You already have your own decent job, don't you?";
+			}
+			close;
+		}else{
+			mes "[Archer Guildsman]";
+			mes "You are... "+strcharinfo(0)+". right?";
 			next;
 			if (getskilllv("NV_BASIC") < 9) {
 				mes "[Archer Guildsman]";
-				mes "Well, you don't have the right skill level. ";
-				mes "Your job level must be at least ^4d4dff10^000000";
-				mes "and your Basic Skill level should reach ^4d4dfflevel 9^000000";
+				mes "Well, you're not at the right skill level.";
+				mes "Your job level must be at least ^4A4AFF10^000000 and your Basic Skill level should reach ^4A4AFFlevel 9";
 				next;
 				mes "[Archer Guildsman]";
-				mes "Because an Archer needs";
-				mes "extremely high concentration,";
-				mes "so we do not accept ";
-				mes "those who have little patience.";
+				mes "Because an Archer needs extremely high concentration, so we do not accept those who have little patience.";
 				close;
 			}
 			mes "[Archer Guildsman]";
-			mes "You seem to have learned the basic skills..";
-			mes "....Hm~~ you are now ready to become an Archer. I will take the step right away.";
+			mes "Your Basic Skill is now enough..";
+			mes "....Hm~~ so you are now ready to be an Archer. I will take the step right away.";
 			next;
-			skill 143,0,1;
-			if(Class == Job_Baby){
-				jobchange Job_Baby_Archer;
-			} else {
-				jobchange Job_Archer;
-			}
 			mes "[Archer Guildsman]";
 			mes "Congratulations! You are now an Archer! Also, we hope that you actively participate in many programs for the revival of the Archer Guild.";
 			mes "Ah, items have arrived from the Production Department. Here, take these! These are all yours!";
-			getitem 1742,1; //N_Composite_Bow
-			getitem 12004,1; //Arrow_Container
-			getitem 12009,1; //Silver_Arrow_Container
-			getitem 12008,1; //Fire_Arrow_Container
+			jobchange Job_Archer;
+			getitem 1742,1;	// N_Composite_Bow
+			getitem 12004,1;	// Arrow_Container
+			getitem 12009,1;	// Silver_Arrow_Container
+			getitem 12008,1;	// Fire_Arrow_Container
 			next;
 			mes "[Archer Guildsman]";
-			mes "Having a bow and arrows, now you've become a real Archer.";
-			mes "If you open the arrow quiver, there will be arrows in it that you can equip.";
-			mes "Well, I expect to hear good news from you. It's time to say goodbye. Bye.";
-			close;
-		}
-		if (Class == Job_Baby_Archer || Class == Job_Archer || Class == Job_Archer_High) {
-			mes "[Archer Guildsman]";
-			mes "Haha, you are kidding me..";
+			mes "Having a bow and arrows, now you became a real Archer.";
+			mes "If you open the arrow container, there are arrows in it and then you can equip them.";
+			mes "Well, I expect to hear better news from you. It's time to say goodbye.";
+			mes "Bye.";
 			close;
 		}
-		mes "[Archer Guildsman]";
-		mes "Wait a second. You've chosen a different job already. You don't need to know this~";
-		close;
 	case 2:
 		mes "[Archer Guildsman]";
 		mes "An Archer has skills using a bow and has various talents.";
 		mes "The greatest ability of an Archer is attacking enemies from a long distance.";
 		next;
 		mes "[Archer Guildsman]";
-		mes "Although an Archer has weaker HP,";
-		mes "he or she can shoot enemies";
-		mes "at a long range,";
+		mes "Although an Archer has weaker HP, he or she can shoot enemies at a long range,";
 		mes "so an Archer is safer in a real battle.";
 		next;
 		mes "[Archer Guildsman]";
-		mes "Although an Archer in Ragnarok has lower HP,";
-		mes "he or she has high accuracy and attack rate";
-		mes "so that the archer can kill monsters";
-		mes "before they get close to an Archer.";
+		mes "Although an Archer in Ragnarok has lower HP, he or she has high accuracy and attack rate so that the archer can kill monsters before they get close to an Archer.";
 		next;
 		mes "[Archer Guildsman]";
-		mes "^8E2323An Archer can change";
-		mes "^8E2323jobs to a Hunter.";
-		mes "^8E2323Other than Hunter, if you are a man, you can change your job to Bard";
-		mes "^8E2323and if you are a woman, you can change your job to Dancer.^000000";
+		mes "^8C2121An Archer can change jobs to a Hunter.^000000";
+		mes "^8C2121Other than Hunter, if you are a man, you can change your job to Bard and if you are a woman, you can change your job to Dancer.^000000";
 		close;
 	case 3:
 		mes "[Archer Guildsman]";
 		mes "If you have any questions, feel free to come and ask me.";
 		close;
 	}
-}
+}

+ 52 - 219
npc/re/jobs/1-1/mage.txt

@@ -3,18 +3,17 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Job Change to Mage Class
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
 //============================================================ 
-geffen_in,164,124,4	script	Mage Guildsman	123,{
+geffen_in,164,124,4	script	Mage Guildsman#mage	123,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_High_Wizard || ADVJOB == Job_Professor)) {
+		if (ADVJOB == Job_High_Wizard || ADVJOB == Job_Professor) {
 			if (Class == Job_Novice_High) {
 				mes "[Mage Guildsman]";
 				mes "Whoa, long time no see! But weren't you supposed to be dead?";
@@ -39,110 +38,89 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 				mes "[Mage Guildsman]";
 				mes "Wow, for some reason, you look way better than you did before. Anyway, I believe you will do a better job being a Mage as well.";
 				close;
+			}else{
+				mes "[Mage Guildsman]";
+				mes "Is there anything more I can help you with? If not, why don't you go test your skills? The world is waiting for you~!";
+				close;
 			}
+		}else{
 			mes "[Mage Guildsman]";
-			mes "Is there anything more I can help you with? If not, why don't you go test your skills? The world is waiting for you~!";
+			mes "What, are you interested in the Mage guild? I didn't want to tell you this, but you don't belong here.";
+			next;
+			mes "[Mage Guildsman]";
+			mes "I am not sure why you're still standing in front of me, but I can tell that you're not meant to be a Mage.";
 			close;
 		}
-		mes "[Mage Guildsman]";
-		mes "What, are you interested in the Mage guild? I didn't want to tell you this, but you don't belong here.";
-		next;
-		mes "[Mage Guildsman]";
-		mes "I am not sure why you're still standing in front of me, but I can tell that you're not meant to be a Mage.";
-		close;
 	}
-	if (Class == Job_Baby_Mage || Class == Job_Mage) {
-		mes "[Mage Guildsman]";
-		mes "Hey, haven't you realized? You're aleady a Mage, silly!";
-		next;
+	if(Class != Job_Novice) {
 		mes "[Mage Guildsman]";
-		mes "One of these days you'll realize the power inside of you when you can make Fire with your mind!";
-		close;
-	}
-	if ((Class != Job_Baby_Mage) && (Class != Job_Mage) && (Class != Job_Novice)) {
-		mes "[Mage Guildsman]";
-		mes "Hey~ C'mon. Quit playing games. You can't be a Mage because you already have another Job.";
+		if(Class == Job_Mage) {
+			mes "Hey, haven't you realized? You're already a Mage, silly!";
+			mes "One of these days you'll realize the power inside of you when you can make Fire with your mind!";
+		}else{
+			mes "Hey~ C'mon. Quit playing games. You can't be a Mage because you already have another Job.";
+		}
 		close;
-	}
-	if (Class == Job_Baby || Class == Job_Novice) {
+	}else{
 		mes "[Mage Guildsman]";
 		mes "Hey?";
 		next;
-		switch (select("I want to be a Mage.:Tell me the Requirements.:Pretty much nothing.")) {
+		switch(select("I want to be a Mage:What are the requirements to be a Mage?:Nothing, thanks.")) {
 		case 1:
 			mes "[Mage Guildsman]";
-			mes "Wanna be a Mage, eh?";
+			mes "Wanna be a Mage? Eh...";
 			next;
 			mes "[Mage Guildsman]";
-			if (Sex == 1) {
+			if (Sex) {
 				mes "Hey, look at you! You're kinda cute~! Not my type though...";
-			}
-			else {
+			}else{
 				mes "Oooh, you're such a hot babe~!";
 				mes "I like girls like you~";
 			}
 			mes "Right, you said that you wanna be a Mage?";
 			next;
-			if (select("I want to be a Mage.:Pretty much nothing.") == 1) {
-				if (getskilllv("NV_BASIC") < 9) {
-					mes "[Mage Guildman]";
-					mes "Oh, what a bummer. You haven't met the requirements yet.";
-					next;
-					mes "[Mage Guildman]";
-					mes "Go back and reach Novice Job level 9 first. Don't forget that you also have to learn all of the Basic Skills before you come back.";
-					close;
-				}
-				mes "[Mage Guildsman]";
-				mes "Okay. Sign right there. Oh, you're very good at spelling.";
-				mes "So your name is... " + strcharinfo(0) + ".";
-				next;
-				mes "[Mage Guildsman]";
-				mes "Hmm I can see that you've worked very hard on your own.";
-				mes "Good! Always sticking to the basics is the best! I will transform you right away.";
-				next;
-				mes "[Mage Guildsman]";
-				mes "*Ahem*";
-				mes "Congratulations!";
-				mes "You are now a Mage!";
-				next;
-				skill 143,0,1;
-				if(Class == Job_Baby){
-					jobchange Job_Baby_Mage;
-				} else {
-					jobchange Job_Mage;
-				}
-				getitem 1639,1; //N_Rod
-				set Zeny, Zeny + 50;
+			if(select("I want to be a Mage.:Nothing, thanks.") == 2) {
 				mes "[Mage Guildsman]";
-				mes "'Welcome to My World~'";
-				mes "Heh heh, I just wanted to say that. You know, it's a quote from a well-known movie~";
-				next;
-				mes "[Mage Guildsman]";
-				mes "Now that you're a Mage just like us, let's be friends, okay?";
+				mes "Whaaaaat~?! Right after you tell me that you wanna become a Mage, you change your mind?! Be a bit more decisive!";
+				close;
+			}
+			mes "[Mage Guildsman]";
+			if (getskilllv("NV_BASIC") < 9) {
+				mes "Oh, man your Basic Skill Level doesn't reach enough to be a Mage.";
+				mes "Go back and level up your Basic Skill.";
 				close;
 			}
+			mes "Alright.. sign the application form.... Wow~ you have good handwriting! Ahh, okay. That's enough.";
+			mes "You are... "+strcharinfo(0)+".";
+			next;
+			mes "[Mage Guildsman]";
+			mes "Hmm I can see that you've tried hard in your own way. Though it seems to be a little clumsy, but well I think it's okay!";
+			mes "Good! Always sticking to the basics is the best! I will transform you right away.";
+			next;
+			mes "[Mage Guildsman]";
+			mes "Hahh..! You are now a Mage, one of our colleagues!";
+			mes "We welcome you to the Mage Guild, our new friend!";
+			next;
 			mes "[Mage Guildsman]";
-			mes "Whaaaaat~?! Right after you tell me that you wanna become a Mage, you change your mind?! Be a bit more decisive!";
+			mes "'Welcome to the Mage Guild~'";
+			mes "Congratulations on becoming a member of the Mage Guild! Go for it!";
+			callfunc "Job_Change",Job_Mage;
+			getitem	1639,1; // N_Rod
 			close;
 		case 2:
 			mes "[Mage Guildsman]";
 			mes "Wanna be a Mage, eh?";
-			if (Sex == 1) {
-				mes "For a cutie like you, I'd be happy to explain the requirements!";
-			}
-			else {
-				mes "I'd be happy to explain the requirements for a pretty girl like you!";
-			}
+			mes "I'd be happy to explain the requirements for a pretty girl like you!";
 			next;
 			mes "[Mage Guildsman]";
-			mes "First of all, you have to reach Novice Job Level 10 and learn all of the Basic Skills. ";
+			mes "First of all, you have to reach Novice Job Level 10 and learn all of the Basic Skills.";
 			next;
 			mes "[Mage Guildsman]";
-			mes "In the past, there was a complicated potion mixing test. Because of that hard test, we slowly started to lose aplicants.";
-			mes "So, we decided to accept all aplicants who have the basic requirements.";
+			mes "In the past, there was a complicated potion making test. Because of that, we'd lost an aplicant slowly.";
+			mes "So, we decided to accept all aplicants who meet the basic requirements.";
 			next;
 			mes "[Mage Guildsman]";
-			mes "Let me know when you are ready to become a Mage, alright?";
+			mes "Don't hesitate. Just be a magician!";
 			close;
 		case 3:
 			mes "[Mage Guildsman]";
@@ -151,148 +129,3 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 		}
 	}
 }
-
-geffen_in,164,112,4	script	Mixing machine	111,{
-	mes "- Out of Order !! -";
-	close;
-}
-
-pay_arche,122,100,0	script	Dollshoi	88,{
-	mes "[Mage Guildsman]";
-	mes "You want a Solution? Hmm, give me 50 Zeny and at least 1 Empty Test Tube.";
-	next;
-	if (select("Alright, Deal.:Nah, forget it.") == 1) {
-		mes "[Mage Guildsman]";
-		if (Zeny < 50) {
-			mes "Hey! You don't have enough money to cover my 50 Zeny charge.";
-			close;
-		}
-		if (countitem(1092) == 0) {
-			mes "You can't carry solutions without a bottle! Bring me an Empty Test Tube.";
-			close;
-		}
-		delitem 1092,1; //Empty_Cylinder
-		set Zeny, Zeny - 50;
-		getitem 1089,1; //Payon_Potion
-		close;
-	}
-	close;
-}
-
-moc_ruins,91,150,0	script	Ponka-Hontas	93,{
-	mes "[Mage Guildsman]";
-	mes "Would you like a Solution? Then please give me 50 Zeny and at least 1 Empty Testtube.";
-	next;
-	if (select("Alright, Deal.:Nah, forget it.") == 1) {
-		mes "[Mage Guildsman]";
-		if (Zeny < 50) {
-			mes "I'm sorry, but you don't have enough money to cover the 50 Zeny fee.";
-			close;
-		}
-		if (countitem(1092) == 0) {
-			mes "You can't carry liquids without using a bottle. Bring an Empty Test Tube the next time you see me.";
-			close;
-		}
-		delitem 1092,1; //Empty_Cylinder
-		set Zeny, Zeny - 50;
-		getitem 1088,1; //Morocc_Potion
-		close;
-	}
-	close;
-}
-
-geffen_in,177,112,4	script	Bookshelf	111,{
-	mes "[Guide Book]";
-	mes "This Guide Book is the property of the Geffen Mage Association. Please handle with care.";
-	next;
-	switch (select("Solution No. 1.:Solution No. 2.:Solution No. 3.:Solution No. 4.:Close.")) {
-	case 1:
-		mes "[Mage Test Solution No. 1]";
-		mes "* Ingredients List *";
-		mes "2 Jellopy";
-		mes "3 Fluff";
-		mes "1 Milk";
-		next;
-		mes "[Mage Test Solution No. 1]";
-		mes "* Solvent Agent *";
-		mes "Payon Solution";
-		mes "Where to Find:";
-		mes "A small spring in Payon, the Archer Village.";
-		next;
-		mes "[Mage Test Solution No. 1]";
-		mes "* Magic Power Serial Code *";
-		mes "8472";
-		next;
-		mes "[Mage Test Solution No. 1]";
-		mes "* Catalyst *";
-		mes "Yellow Gemstone";
-		mes "(Provided by";
-		mes "Mixing Machine)";
-		close;
-	case 2:
-		mes "[Mage Test Solution No. 2]";
-		mes "* Ingredients List *";
-		mes "3 Jellopy";
-		mes "1 Fluff";
-		mes "1 Milk";
-		next;
-		mes "[Mage Test Solution No. 2]";
-		mes "* Solvent Agent *";
-		mes "None";
-		next;
-		mes "[Mage Test Solution No. 2]";
-		mes "* Magic Power Serial Code *";
-		mes "3735";
-		next;
-		mes "[Mage Test Solution No. 2]";
-		mes "* Catalyst *";
-		mes "Red Gemstone";
-		mes "(Provided by";
-		mes "Mixing Machine)";
-		close;
-	case 3:
-		mes "[Mage Test Solution No. 3]";
-		mes "* Ingredients List *";
-		mes "6 Jellopy";
-		mes "1 Fluff";
-		next;
-		mes "[Mage Test Solution No. 3]";
-		mes "* Solvent Agent *";
-		mes "Payon Solution";
-		mes "Where to Find:";
-		mes "A small spring in Payon, the Archer Village.";
-		next;
-		mes "[Mage Test Solution No. 3]";
-		mes "* Magic Power Serial Code *";
-		mes "2750";
-		next;
-		mes "[Mage Test Solution No. 3]";
-		mes "* Catalyst *";
-		mes "Blue Gemstone";
-		mes "(Provided by";
-		mes "Mixing Machine)";
-		close;
-	case 4:
-		mes "[Mage Test Solution No. 4]";
-		mes "* Ingredients List *";
-		mes "2 Jellopy";
-		mes "3 Fluff";
-		next;
-		mes "[Mage Test Solution No. 4]";
-		mes "* Solvent Agent *";
-		mes "Morroc Solution";
-		mes "Where to Find:";
-		mes "A small spring near entrance of pyramid in Morroc.";
-		next;
-		mes "[Mage Test Solution No. 4]";
-		mes "* Magic Power Serial Code *";
-		mes "5429";
-		next;
-		mes "[Mage Test Solution No. 4]";
-		mes "* Catalyst *";
-		mes "1 carat Diamond";
-		mes "(Provided by";
-		mes "Mixing Machine)";
-		close;
-	}
-}

+ 41 - 130
npc/re/jobs/1-1/merchant.txt

@@ -3,18 +3,17 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Job Change to Merchant Class
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
 //============================================================ 
 alberta_in,53,43,6	script	Merchant#mer	86,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Whitesmith || ADVJOB == Job_Creator)) {
+		if (Class == Job_Novice_High && (ADVJOB == Job_Whitesmith || ADVJOB == Job_Creator)) {
 			mes "[Chief Mahnsoo]";
 			mes "Long time no see!";
 			mes "Hey, you didn't quit";
@@ -37,7 +36,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "[Chief Mahnsoo]";
 			mes "I guess it's destiny that we meet like this once more. Alright. Once again, let me change you into a Merchant!";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Merchant_High;
 			skill 153,1,0;
 			skill 154,1,0;
@@ -45,22 +44,34 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "[Chief Mahnsoo]";
 			mes "Ah~ How nostalgic. Just like old times! Alright, do your best!";
 			close;
+		}else{
+			mes "[Chief Mahnsoo]";
+			mes "^333333*Sigh*^000000";
+			mes "I'm so bored...";
+			mes "When will I hear from my lovely Blossom?";
+			close;
 		}
-		mes "[Chief Mahnsoo]";
-		mes "^333333*Sigh*^000000";
-		mes "I'm so bored...";
-		mes "When will I hear from my lovely Blossom?";
-		close;
 	}
-	mes "[Chief Mahnsoo]";
-	mes "So, what brings you to";
-	mes "the Merchant Association?";
-	mes "Is there anything";
-	mes "I can help you with?";
+	mes "[Guildsman Mahnsoo]";
+	mes "Hey, why are you here?";
 	next;
-	switch (select("I want to be a Merchant.:Tell me about Merchants.:Tell me the requirements.:Nope.")) {
+	switch(select("I want to be a merchant.:I want to know more about merchants.:Ask him the requirements to be a merchant.:Nothing.")) {
 	case 1:
-		if (Class == Job_Baby || Class == Job_Novice) {
+		if(Class != Job_Novice) {
+			mes "[Guildsman Mahnsoo]";
+			if(Class == Job_Merchant) {
+				mes ".....? Sorry? What are you saying?";
+				mes "You are already a merchant. Oh my..";
+				mes "Huh?! ...Do I need to laugh right now?!";
+			}else{
+				mes "Ahh? Are you trying to have both ways?";
+				mes "How about just giving yourself over to your original job?";
+				next;
+				mes "[Guildsman Mahnsoo]";
+				mes "We have business ethics you know.";
+			}
+			close;
+		}else{
 			mes "[Guildsman Mahnsoo]";
 			mes "Want to be a merchant? Hmm...";
 			next;
@@ -78,137 +89,37 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			next;
 			mes "[Guildsman Mahnsoo]";
 			mes "Congratulations on becoming a merchant!";
-			next;
-			skill 143,0,1;
-			if(Class == Job_Baby){
-				jobchange Job_Baby_Merchant;
-			} else {
-				jobchange Job_Merchant;
-			}
-			set MERCNT_Q,0;
-			set MERCNT_Q2,0;
-			getitem 1381,1; //N_Battle_Axe
-			mes "[Guildsman Mahnsoo]";
 			mes "Congratulations again for being a member of the merchant guild and one of our colleagues. I expect your active participation from now on!";
+			callfunc "Job_Change",Job_Merchant;
+			getitem	1381,1; // N_Battle_Axe
 			next;
 			mes "[Guildsman Mahnsoo]";
-			mes "Absolutely, we need young people who have passion to achieve our great goal for securing 20% of the worldwide currency volume. You get it? Huh? ";
-			mes "Well, I'm just saying... It means let's make lots of money in the end. You guys know that~";
+			mes "Absolutely, we need young people who have passion to achieve our great goal for securing 20% of the worldwide currency volume. You get it? Huh?";
+			mes "Well, I'm just saying... it means let's make lots of money in the end. You guys know that~";
 			close;
 		}
-		if (Class == Job_Baby_Merchant || Class == Job_Merchant || Class == Job_Merchant_High) {
-			mes "[Chief Mahnsoo]";
-			mes "Hello there!";
-			mes "How do you like";
-			mes "being a Merchant?";
-			next;
-			mes "[Chief Mahnsoo]";
-			mes "Having a way with";
-			mes "money certainly";
-			mes "has its perks,";
-			mes "does it not?";
-			close;
-		}
-		mes "[Chief Mahnsoo]";
-		mes "We Merchants hate people who are two faced. It's bad for business.";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "People who always try to take advantage of other people by selling things at a ridiculous price just so they can make money that they'll waste are the worst.";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "Well, in any case, we only accept Novices for job changes to the Merchant class. But I appreciate your interest in what we do.";
-		close;
 	case 2:
-		mes "[Chief Mahnsoo]";
-		mes "Merchant?";
-		mes "Well, we basically sell goods to make money. That is the way";
-		mes "of the Merchant.";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "I guess we may not be the best at fighting, and we don't have many special attacks. We've got no healing skills...";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "But we can buy goods at lower prices from NPC shops and sell them at a higher price to other people~";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "Our ultimate attack skill is 'Mammonite.' The strength of Mammonite comes from the anger";
-		mes "when we're forced to throw away perfectly good zeny.";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "Throwing away zeny like that";
-		mes "causes a deadly rage to well up in the heart of any Merchant!";
-		mes "Just thinking about it";
-		mes "makes my blood boil!";
-		next;
-		mes "[Chief Mahnsoo]";
-		mes "Anyway, we can use most";
-		mes "weapons except Bows, Rods, and Two-Handed Swords. But we can always sell those.";
+		mes "[Guildsman Mahnsoo]";
+		mes "Merchant? To put it simply, the person who sells good and makes money is a merchant.";
+		mes "Not good at fighting and doesn't have special attack/recovery skills... but a merchant can buy things at a low price and then sell them and make money.";
 		next;
-		mes "[Chief Mahnsoo]";
-		mes "Yes...";
-		mes "We Merchants generally";
-		mes "have money on our minds...";
+		mes "[Guildsman Mahnsoo]";
+		mes "Well, a merchant has an ultimate skill called Mammonite which strikes an enemy with his/her money... We can equip everything except Bows, Rods, and Two-Handed Swords. But we can always sell and buy those.";
+		mes "Yes... we merchants always have money on our minds, got it?";
 		close;
 	case 3:
 		mes "[Guildsman Mahnsoo]";
-		mes "To become a Merchant,";
-		mes "although just selling and receiving money is our job,";
-		mes "you will need to learn all Basic Skills.";
+		mes "To become a merchant, although just selling and receiving money is our job, you must reach at least basic skill level 9.";
 		next;
 		mes "[Guildsman Mahnsoo]";
-		mes "Well, we used to receive a Membership Fee. But was it so hard to make that money?";
+		mes "Well, we used to receive a start-up fee before. Wasn't it hard to make that money?";
 		mes "There were too many people who couldn't gather that money and kept crying.";
 		next;
 		mes "[Guildsman Mahnsoo]";
-		mes "So recently, we decided to allow any Novice who wants to be a Merchant become one.";
-		mes "Because staying alive or not, it all rests on your own ability.";
+		mes "So recently, we decided to allow any Novice who wants to be a merchant become one.";
+		mes "Because to be alive or not later is all up to one's ability.";
 		close;
 	case 4:
 		close;
 	}
 }
-
-alberta_in,28,29,2	script	Merchant Guildsman	83,{
-	if ((MERCNT_Q >= 0) && (MERCNT_Q <= 2)) {
-		mes "[Union Staff Kay]";
-		mes "I am sorry, but we don't make deliveries anymore.";
-		mes "Didn't Chief Mahnsoo tell you?";
-		close;
-	}
-	mes "[Union Staff Kay]";
-	mes "Ah, we don't make deliveries anymore.";
-	mes "Too many people cried and kept whining that it's too difficult.";
-	next;
-	mes "[Union Staff Kay]";
-	mes "Well, maybe we will have a few deliveries later.";
-	mes "Anyway, I don't have any work now...";
-	close;
-}
-
-morocc_in,140,102,4	script	Student#mer	86,{
-	if (MERCNT_Q == 4 || MERCNT_Q == 3) {
-		mes "[Dyer's Student]";
-		mes "I am sorry, but the Merchant Guild no longer makes deliveries to us anymore.";
-		close;
-	}
-	mes "[Dyer's Student]";
-	mes "Mr. Java Dullihan is the one and only, the best dye maker on the Rune-Midgard continent.";
-	next;
-	mes "[Dyer's Student]";
-	mes "Aaaand I'm proud to say that I'm his student! Someday, I'll be able to make really beautiful dyes too!";
-	next;
-	mes "[Dyer's Student]";
-	mes "Of course, I'm still learning the basics right now, but someday...";
-	close;
-}
-
-geffen_in,155,122,4	script	Guild Staff	47,{
-	if (MERCNT_Q == 4 || MERCNT_Q == 3) {
-		mes "[Guild Staff]";
-		mes "I am sorry, but the Merchant Guild no longer makes deliveries to us anymore.";
-		close;
-	}
-	mes "[Guild Staff]";
-	mes "My package should have arrived by now. Huh. I guess the Merchant Guild might be running a little late...";
-	close;
-}

+ 59 - 70
npc/re/jobs/1-1/swordman.txt

@@ -3,90 +3,98 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Job Change to Swordman Class
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
 //============================================================ 
-izlude_in,74,172,4	script	Swordman	119,{
+izlude_in,74,172,4	script	Swordman#swd	119,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Lord_Knight || ADVJOB == Job_Paladin)) {
-			mes "[Swordman Guildsman]";
+		if (Class == Job_Novice_High && (ADVJOB == Job_Lord_Knight || ADVJOB == Job_Paladin)) {
+			mes "[Swordman]";
 			mes "It...";
 			mes "Can't be...";
 			mes "You've been reborn, haven't you?";
 			next;
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "I see you're retreading the path of the Swordman! Once you've gotten used to brandishing a sword, you can never go back!!";
 			next;
 			if (getskilllv("NV_BASIC") < 9) {
-				mes "[Swordman Guildsman]";
+				mes "[Swordman]";
 				mes "Hmm? Ah, you must first master the Basic Skills before you are ready to become a Swordman.";
 				next;
-				mes "[Swordman Guildsman]";
+				mes "[Swordman]";
 				mes "Come back to me when you have finished learning the Basic Novice Skills.";
 				close;
 			}
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "Excellent! Let me promote you to a Swordman right away!";
 			next;
-			skill 143,0,1;
+			skill 143,0,0;
 			jobchange Job_Swordman_High;
 			skill 144,1,0;
 			skill 145,1,0;
 			skill 146,1,0;
-			mes "[Swordman Guildsman]";
+			mes "[Swordman]";
 			mes "Hmm... You look like a well-experienced Swordman. Still, I'm sure that you must train to improve your skills and gain strength!";
 			close;
+		}else{
+			mes "[Swordman]";
+			mes "Hm...?";
+			mes "You're a reborn";
+			mes "warrior, aren't you?";
+			next;
+			mes "[Swordman]";
+			mes "Hmmm...";
+			mes "It seems that being";
+			mes "a Swordman is not part";
+			mes "of your destiny. I'm sorry,";
+			mes "but it seems there is nothing";
+			mes "I can do for you.";
+			close;
 		}
-		mes "[Swordman Guildsman]";
-		mes "Hm...?";
-		mes "You're a reborn";
-		mes "warrior, aren't you?";
-		next;
-		mes "[Swordman Guildsman]";
-		mes "Hmmm...";
-		mes "It seems that being";
-		mes "a Swordman is not part";
-		mes "of your destiny. I'm sorry,";
-		mes "but it seems there is nothing";
-		mes "I can do for you.";
-		close;
 	}
 	mes "[Swordman Guildsman]";
-	mes "Welcome to the";
-	mes "Swordman Association!";
-	next;
-	mes "[Swordman Guildsman]";
-	mes "So...";
-	mes "What business";
-	mes "brings you to us?";
+	mes "This is the Swordman Guild.";
+	mes "Why are you here?";
 	next;
-	switch (select("Tell me about being a Swordman.:I want to be a Swordman.:Cancel.")) {
+	switch(select("Tell me about being a Swordman.:I want to be a Swordman.:Nothing.")) {
 	case 1:
 		mes "[Swordman Guildsman]";
-		mes "So you wish to know more about the mighty Swordman job? Well, then...";
+		mes "So you wish to know more about the mighty Swordman? Okay!";
 		next;
 		mes "[Swordman Guildsman]";
-		mes "Amongst the First Class jobs, the Swordman is the best melee fighter for three reasons.";
-		mes "There are 3 reasons why Swordy is the best to approch a fight!";
+		mes "The most distinctive feature of the Swordman is that the Swordman can show us his/her real abilities in close combat.";
+		mes "There are three reasons!";
 		next;
 		mes "[Swordman Guildsman]";
-		mes "First, Swordman has the benefit of additional HP. Second, Swordman generally have access to a wider selection fo weapons than the other First Class jobs.";
+		mes "First, Swordman has higher HP than other jobs.";
+		mes "Second, except for Bows and Rods, Swordman can use all other weapons so they can fight at their optimal ability.";
+		mes "And third, most of the skills of the Swordman give powerful physical attacks.";
 		next;
 		mes "[Swordman Guildsman]";
-		mes "And third, most of the Swordman skills are crushing physical attacks! In my opinion, being a Swordman is the best job ever!";
+		mes "Though I gave you a simple explanation, I believe you understand the core meaning of what it is to be a Swordman.";
+		mes "In my opinion, Swordman is the best job ever!";
 		close;
 	case 2:
-		if (Class == Job_Baby || Class == Job_Novice) {
+		if(Class != Job_Novice) {
+			mes "[Swordman Guildsman]";
+			if(Class == Job_Swordman) {
+				mes "You are already an excellent Swordman, aren't you?";
+				mes "Just devote yourself to be a great Swordman.";
+			}else{
+				mes "You already have one of the other jobs, don't you?";
+				mes "You've gone too far with that joke.";
+			}
+			close;
+		}else{
 			if (getskilllv("NV_BASIC") < 9) {
 				mes "[Swordman Guildsman]";
-				mes "I'm sorry to tell you this but to be a Swordman, you must reach at least ^4d4dffJob Level 10^000000.";
-				mes "and ^4d4dffBasic Skill Level 9^000000.";
+				mes "I'm sorry to tell you this but to be a Swordman, you must reach at least ^4A4AFFJob Level 10^000000.";
+				mes "and ^4A4AFFBasic Skill Level 9^000000.";
 				next;
 				mes "[Swordman Guildsman]";
 				mes "Want to be a Swordman without having the minimum requirement?";
@@ -97,42 +105,23 @@ izlude_in,74,172,4	script	Swordman	119,{
 			mes "Hmm, both your Job Level and Basic Skill Level check out.";
 			mes "Good. Do you want to be a Swordman right away?";
 			next;
-			switch (select("Yes, I do.:I'll consider it again.")) {
-			case 1:
-				mes "[Swordman Guildsman]";
-				mes "Congratulations! From now on, you are going to live a Swordman's life!";
-				mes "I will transform you right away!";
-				next;
-				skill 143,0,1;
-				if(Class == Job_Baby){
-					jobchange Job_Baby_Swordman;
-				} else {
-					jobchange Job_Swordman;
-				}
-				getitem 13415,1; //N_Falchion
-				mes "[Swordman Guildsman]";
-				mes "Congratulations again for becomming a Swordman and I hope that you participate in many activities for the revival of our guild.";
-				close;
-			case 2:
+			if(select("Yes, I do.:I'll consider it again.") == 2) {
 				mes "[Swordman Guildsman]";
-				mes "Yeah. Careful consideration is needed for choosing a job.";
-				mes "But I feel sorry... that you'll have to consider it again after all the trials....";
+				mes "Yeah. Prudent decision is needed for choosing a job.";
+				mes "But I feel sorry... that you consider it again after overcoming all the hardships....";
 				close;
 			}
-		}
-		if (Class == Job_Baby_Swordman || Class == Job_Swordman) {
 			mes "[Swordman Guildsman]";
-			mes "You are already an excellent Swordman, aren't you?";
-			mes "Just devote yourself to be a great Swordman.";
+			mes "Congratulations! From now on, you are going to live a Swordman's life!";
+			mes "Let's do it right now!";
+			next;
+			mes "[Swordman Guildsman]";
+			mes "Congratulations again for being a Swordman and I hope that you participate in many activities for the revival of our guild.";
+			callfunc "Job_Change",Job_Swordman;
+			getitem 13415,1; // N_Falchion
 			close;
 		}
-		mes "[Swordman Guildsman]";
-		mes "Haha! Oh boy. I'm flattered, but you already have another job! Still, I can't blame you...";
-		close;
 	case 3:
-		mes "[Swordman Guildsman]";
-		mes "Ha ha ha!";
-		mes "Ah, youth!";
 		close;
 	}
-}
+}

+ 131 - 254
npc/re/jobs/1-1/thief.txt

@@ -3,31 +3,30 @@
 //===== By: ================================================== 
 //= Kisuka
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Job Change to Thief Class
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Kisuka]
-//= 1.1 Added Baby job change support. [Masao]
 //============================================================ 
-moc_prydb1,39,129,2	script	Thief Guildsman	69,{
+moc_prydb1,39,129,2	script	Thief Guide#thief	69,{
 	if (Upper == 1) {
-		if ((Class == Job_Novice_High) && (ADVJOB == Job_Assassin_Cross || ADVJOB == Job_Stalker)) {
+		if (ADVJOB == Job_Assassin_Cross || ADVJOB == Job_Stalker) {
 			if (Class == Job_Novice_High) {
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Huh? Do I know you? It's creepy that you seem so familiar. You don't have a twin, do you?";
 				next;
 				if (getskilllv("NV_BASIC") < 9) {
-					mes "[Thief Guildsman]";
+					mes "[Thief Guide]";
 					mes "What, do you want to be a Thief? I'm sorry, but you look like you need more training.";
 					next;
-					mes "[Thief Guildsman]";
+					mes "[Thief Guide]";
 					mes "Take your time and learn all the Basic Skills, will you? Well then, see you later~!";
 					close;
 				}
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Well, I got this feeling like you've been through a lifetime of fighting, so I'm promoting you to a Thief right this minute. I better give you tough guys what you want...";
 				next;
 				skill 143,0,0;
@@ -36,295 +35,173 @@ moc_prydb1,39,129,2	script	Thief Guildsman	69,{
 				skill 150,1,0;
 				skill 151,1,0;
 				skill 152,1,0;
-				mes "[Thief Guildsman]";
+				mes "[Thief Guide]";
 				mes "Since you've become a Thief, live as a Thief. Now, go for it! Next~";
 				close;
+			}else{
+				mes "[Thief Guide]";
+				if (sex)
+					mes "Hey, dude.";
+				else
+					mes "Hey, baby~";
+				close;
 			}
-			mes "[Thief Guildsman]";
-			if (Sex == 1) {
+		}else{
+			mes "[Thief Guide]";
+			if (sex)
 				mes "Hey, dude.";
-			} else {
-				mes "Hey, baby~";
-			}
+			else
+				mes "Hey, baby.";
+			mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
 			close;
 		}
-		mes "[Thief Guildsman]";
-		if (Sex == 1) {
-			mes "Hey, dude.";
-		} else {
-			mes "Hey, baby~";
-		}
-		mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
-		close;
 	}
-	if (Class == Job_Baby_Thief || Class == Job_Thief || Class == Job_Thief_High) {
+	if(q_job_thief == 1) {
 		mes "[Thief Guildsman]";
-		mes "Hey~ if you have any trouble, get it out to me anytime, huh?";
+		mes "Ehh... Seems like a beloved "+(Sex?"son":"daughter")+" of a rich family, but why are you here in this dirty place?";
+		next;
+		mes "[Thief Guildsman]";
+		mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
+		mes "If you want to become a Thief, ask the sharp-eyed guy next to me.";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
-		mes "[Thief Guildsman]";
-		mes "What the heck...?";
-		switch (Class) {
-		case Job_Swordman:
-			mes "Huh.";
-			mes "Now, that's";
-			mes "a big sword.";
-			next;
-			mes "[Thief Guildsman]";
-			mes "So...";
-			mes "Trying to make";
-			mes "up for something";
-			mes "...Buddy?";
-			close;
-		case Job_Mage:
-			mes "What's a Mage doin' here? Shouldn't you be doing card tricks elsewhere? Oh well, it's a free country...";
-			next;
-			mes "[Thief Guildsman]";
-			mes "Oh wait,";
-			mes "it's not...";
-			mes "Get outta here!";
-			close;
-		case Job_Archer:
-			mes "Man, shouldn't you";
-			mes "Archers be playing";
-			mes "in the forest";
-			mes "or something?";
-			close;
-		case Job_Merchant:
-			mes "You're a Merchant,";
-			mes "right? Why are you";
-			mes "walking into a den";
-			mes "of Thieves?!";
-			next;
-			mes "[Thief Guildsman]";
-			mes "It's like you're begging";
-			mes "us to steal from you!";
-			mes "Come on, hurry and";
-			mes "get outta here~";
-			close;
-		case Job_Acolyte:
-			mes "You know we all steal for a living, right? What are you doing in this kinda place, Acolyte?";
-			close;
-		case Job_Assassin:
-			mes "Didn't you use to be one of us?! Man, you changed. You seem real dangerous now...";
-			close;
-			close;
-		case Job_Rogue:
-			mes "Man, you got real cool all of a sudden! You must have some skills I can only dream of!";
-			close;
-			close;
-		case Job_Priest:
-			mes "Oh my God...";
-			mes "Am I dying?";
-			next;
+	if(Class != Job_Novice) {
+		if(Class == Job_Thief) {
 			mes "[Thief Guildsman]";
-			mes "Why else would a Priest come here? I guess I better start confessing all of my misdeeds.";
+			mes "Hey~ if you have any trouble, get it out to me anytime, huh?";
 			close;
-		}
-		next;
-		if (Sex == 1) {
-			mes "Hey, dude.";
-		}
-		else {
-			mes "Hey, baby~";
-		}
-		mes "...Hey! You look too goody-goody to want to be a Thief!! Now scram, I'm busy. Next!";
-		close;
-	}
-	if (Class == Job_Baby || Class == Job_Novice) {
-		mes "[Thief Guildsman]";
-		if (Sex == 1) {
-			mes "Ehh... Seems like a beloved son of a rich family, but why are you here in this dirty place?";
-		}
-		else {
-			mes "Ehh... Seems like a beloved daughter of a rich family, but why are you here in this dirty place?";
-		}
-		next;
-		switch (select("I want to be a Thief.:Nothing.")) {
-		case 1:
-			if (THF_Q == 0) {
+		}else{
+			if(Sex) {
 				mes "[Thief Guildsman]";
-				mes "Well, are you that proud of it? You're telling me so proudly that you want to be a Thief! Why don't you go to all the villages and advertise yourself for being a thief?";
-				mes "'Ha ha ha! Go put up a banner that says 'I will be a proud thief who steals other people's stuff.'";
+				mes "What the heck...?";
+				mes "Huh.. you are a "+jobname(Class)+" blockhead...!";
 				next;
 				mes "[Thief Guildsman]";
-				mes "Do you want to be a thief so badly?";
-				next;
-				switch (select("Yes.:No.:How about you?")) {
-				case 1:
-					mes "[Thief Guildsman]";
-					mes "Well, are you that proud of it? You're telling me so proudly that you want to be a Thief! Why don't you go to all the villages and advertise yourself for being a thief?";
-					mes "'Ha ha ha! Go put up a banner that says 'I will be a proud thief who steals other people's stuff.'";
-					next;
-					break;
-				case 2:
-					mes "[Thief Guildsman]";
-					mes "Then why are you here? Do you think you can become a thief so easily?";
-					next;
-					break;
-				case 3:
-					mes "[Thief Guildsman]";
-					mes "Eh..? me? me?";
-					mes "Well... I just fit well to being a thief... characteristically... I don't mind this silly matter.";
-					next;
-					break;
-				}
-				mes "[Thief Guildsman]";
-				mes "Anyway, in the outside world, never say that you want to be a Thief!!";
-				next;
+				mes "Hey, brother.";
+				mes "Why are you here? Go back to your place~ go back~~";
+				close;
+			}else{
 				mes "[Thief Guildsman]";
-				mes "So, do you want to apply for being a Thief?";
+				mes "What the heck...?";
 				next;
-				if (select("Yes, I do.:No.") == 1) {
-					mes "[Thief Guildsman]";
-					mes "Alright, tell me your name. Huh? What?";
-					mes "" + strcharinfo(0) + ". " + strcharinfo(0) + ", right...?";
-					next;
-					if (getskilllv("NV_BASIC") < 9) {
-						mes "[Thief Guildsman]";
-						mes "I can see your strong will to become a Thief......";
-						mes "But only with your will, you cannot make it in a real fight, can you? So go and reach at least Basic Skill Level 9.";
-						close;
-					}
-					mes "[Thief Guildsman]";
-					mes "Alright. I looked at your Felony Record, and you seem to have a very interesting history. You might have what it takes to be a Thief.";
-					mes "" + strcharinfo(0) + ". I now decree that you have passed this interview. Good work!";
-					set THF_Q,1;
-					next;
-					mes "[Thief Guildsman]";
-					mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
-					mes "If you want to become a Thief, ask the guy next to me.";
-					close;
-				}
 				mes "[Thief Guildsman]";
-				mes "Well... do what you want to do~ Go your way~";
+				mes "Hey, lady.";
+				mes "Why are you here? Go back to your place~ go back~~";
 				close;
 			}
-			if (THF_Q == 1) {
-				mes "[Thief Guildsman]";
-				mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
-				mes " If you want to become a Thief, ask the sharp-eyed guy next to me.";
-				close;
-			}
-			mes "[Thief Guildsman]";
-			mes "Oh, before I let you go... ...did you take any mushrooms?";
-			mes "... ...It was a joke.";
-			mes "You don't need to do a test, and if you want to jobchange, you can do it directly.";
-			next;
-			mes "[Thief Guildsman]";
-			mes "In short it was just a joke.";
-			mes "Ha ha ha ha ha!!";
-			close;
-		case 2:
-			mes "[Thief Guildsman]";
-			mes "You know you cannot be a thief without an application.....";
-			mes "What's on your mind..?";
-			close;
 		}
 	}
-}
-
-moc_prydb1,42,133,2	script	Comrade	118,{
-	if (Class == Job_Baby_Thief || Class == Job_Thief || Class == Job_Thief_High) {
-		mes "[Brad]";
-		mes "I don't have any special events now. So go on your way and come back later.";
+	mes "[Thief Guildsman]";
+	mes "Ehh... Seems like a beloved "+(Sex?"son":"daughter")+" of a rich family, but why are you here in this dirty place?";
+	next;
+	if(select("I want to be a Thief.:Nothing.") == 2) {
+		mes "[Thief Guildsman]";
+		mes "You know you cannot be a thief without an application.....";
+		mes "What's on your mind..?";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
-		mes "[Comrade]";
-		mes "Um...";
-		mes "You don't look";
-		mes "like a Thief.";
+	mes "[Thief Guildsman]";
+	mes "Well, are you that proud of it?";
+	mes "You're telling me so proudly that you want to be a Thief! Why don't you go to all the villages and advertise yourself for being a thief?";
+	mes "'Ha ha ha! Go put up a banner that says 'I will be a proud thief who steals other people's stuff.'";
+	next;
+	mes "[Thief Guildsman]";
+	mes "Do you want to be a thief so badly?";
+	next;
+	switch(select("Yes.:No.:How about you?")) {
+	case 1:
+		mes "[Thief Guildsman]";
+		mes "Oh, do you...? Huh.. well... I do live and learn to see strange people like you.";
+		next;
+		break;
+	case 2:
+		mes "[Thief Guildsman]";
+		mes "Then why are you here? Do you think you can become a thief so easily?";
 		next;
-		mes "[Comrade]";
-		mes "What the heck are";
-		mes "you doing here anyway?";
+		break;
+	case 3:
+		mes "[Thief Guildsman]";
+		mes "Eh..? me? me?";
+		mes "Well... I just fit well to being a thief... characteristically... I don't mind this silly matter.";
+		next;
+		break;
+	}
+	mes "[Thief Guildsman]";
+	mes "Anyway, in the outside world, never say that you want to be a Thief!!";
+	next;
+	mes "[Thief Guildsman]";
+	mes "So, do you want to apply for being a Thief?";
+	next;
+	if(select("Yes, I do.:No.") == 2) {
+		mes "[Thief Guildsman]";
+		mes "Well... do what you want to do~ Go your way~";
 		close;
 	}
-	if (THF_Q == 0) {
-		mes "[Comrade]";
-		mes "What's the matter? If you want to be a Thief, speak to the woman beside me.";
+	mes "[Thief Guildsman]";
+	mes "Alright, tell me your name. Huh? What?";
+	mes ""+strcharinfo(0)+". So "+strcharinfo(0)+", right...?";
+	next;
+	if (getskilllv("NV_BASIC") < 9) {
+		mes "[Thief Guildsman]";
+		mes "I can see your strong will to become a Thief......";
+		mes "But only with your will, you cannot make it in a real fight, can you?";
+		mes "So go and reach at least Basic Skill Level 9.";
 		close;
 	}
-	if (THF_Q == 1) {
+	mes "[Thief Guildsman]";
+	mes "Hmm.... I found your interesting criminal records from the data of the detective agency. Well you seem to have what it takes to be a good thief.";
+	mes ""+strcharinfo(0)+". I now declare that you have passed the job interview!";
+	next;
+	mes "[Thief Guildsman]";
+	mes "Well, I'm not in charge of making you a Thief. I just accept applications, get it?";
+	mes "If you want to become a Thief, ask the guy next to me.";
+	set q_job_thief,1;
+	close;
+}
+
+moc_prydb1,42,133,2	script	Thief Guildsman#thief	118,{
+	if(q_job_thief == 1) {
 		mes "[Thief Guildsman]";
 		mes "Alright. You must have passed the job interview, huh?";
 		mes "Good. I'll accept you.";
 		mes "Let's begin the job-changing ceremony of our guild!";
 		next;
-		mes "[Leader of Thief Guild 'E']";
-		mes "" + strcharinfo(0) + "...";
-		mes "'For those who are ready, the moonlight shall open the way. You are now one of us.'";
-		skill 143,0,1;
-		if(Class == Job_Baby){
-			jobchange Job_Baby_Thief;
-		} else {
-			jobchange Job_Thief;
-		}
-		getitem 13041,1; //N_Main_Gauche
-		erasequest 1013;
+		mes "[Commander of Thief Guild]";
+		mes "'"+strcharinfo(0)+".'";
+		mes "'For those who are ready, the moonlight shall open the way. Now you are fully ready, I now officially allow you to become a member of the Thief Guild.'";
+		jobchange Job_Thief;
+		set q_job_thief,0;
+		getitem 13041,1; // N_Main_Gauche
 		next;
-		mes "[Leader of Thief Guild 'E']";
-		mes "'Congratulations on becoming a Thief!'";
-		mes "'From now, be an honorable representative of the Thief's Guild.'";
-		mes "'If you bring disgrace to our guild, you will be killed.'";
-		mes "'Anyway, I expect you to be a great Thief.'";
+		mes "[Commander of Thief Guild]";
+		mes "'Congratulations on becoming a Thief.'";
+		mes "'From now on, keep the rules of our guild and be an honorable member.'";
+		mes "'If you bring us any disgrace by breaking our rules, you better watch your back.'";
+		mes "'Anyway, I expect you to be a great thief.'";
 		next;
 		mes "[Brad]";
-		mes "*Ahem* Welcome to the Guild, comrade!";
-		mes "I'm Brad, and I'm in charge of human resources here.";
+		mes "Heee~Yaaaa~! Congratulations! My friend.";
+		mes "My name is 'Brad'. I'm in charge of human resources here.";
 		mes "I'm not sure for now but you'll have more chances to see me later on.";
 		next;
 		mes "[Brad]";
-		mes "Okay, I've done what I can do to you, so go on your way. I'm a quite busy man.";
-		mes "Alright then, I'll see you around~";
-		close;
-	}
-}
-
-moc_ruins,141,125,3	script	Mr. Irrelevant	83,{
-	if (Class == Job_Baby_Thief || Class == Job_Thief) {
-		mes "[Mr. Irrelevant]";
-		mes "Ah, I see that you are now a Thief. I always knew you'd join us.";
-		next;
-		mes "[Mr. Irrelevant]";
-		mes "Why don't you leave this place?";
+		mes "Okay, I've done what I can do to you, so go on your way. I'm quite a busy man.";
+		mes "See you again.";
 		close;
 	}
-	if ((Class != Job_Baby) && (Class != Job_Novice) && (Class != Job_Baby_Thief) && (Class != Job_Thief)) {
-		set .@rand,rand(1,5);
-		switch(.@rand){
-			mes "[Mr. Irrelevant]";
-		case 1:
-			mes "Today looks like a good day to go to the pyramids and hunt with some of my friends.";
-			close;
-		case 2:
-			mes "I could use a good, hard drink.";
-			close;
-		case 3:
-			mes "Gimme your money.";
-			next;
-			mes "[Mr. Irrelevant]";
-			mes "Kidding, I'm off the clock.";
-			close;
-		case 4:
-			mes "WHO YOU CALLING A PSYCHO?!?!";
-			close;
-		case 5:
-			mes "I've got nothing to say to you. Would you mind leaving me alone?";
-			close;
+	if(Class != Job_Novice) {
+		if(Class == Job_Thief) {
+			mes "[Brad]";
+			mes "I don't have any special events now. So go on your way and come back later.";
+		}else{
+			mes "[Thief Guildsman]";
+			mes "Hey~ Hey~ You're not a novice or a thief!";
+			mes "What are you doing here? You're not welcome to make this place your home~ Hweeeee~ Get outta here~";
 		}
-	}
-	if (THF_Q == 1) {
-		mes "[Mr. Irrelevant]";
-		mes "There is this strange smell coming from... You. Now why would that be?";
 		close;
 	}
-	mes "[Mr. Irrelevant]";
-	mes "Hey Novice! Why don't you join the ranks of the Thief Guild? You newbies are always welcome to join us and our selfish cause.";
-	next;
-	mes "[Mr. Irrelevant]";
-	mes "You can get more information in the Underground Room in the Pyramid 1 BF.";
+	mes "[Thief Guildsman]";
+	mes "Ho? Why is a novice like you visiting here?";
+	mes "If you are here to be a Thief, ask the nasty-tempered lady right next to me.";
 	close;
-}
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов