소스 검색

* Some cleaning of "Novice Training Grounds" script (npc\jobs\novice\novice.txt)
* Cleaned up "PvP NPCs" script a little bit (npc\other\pvp.txt)

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

euphyy 13 년 전
부모
커밋
ec79a1b50d
6개의 변경된 파일146개의 추가작업 그리고 638개의 파일을 삭제
  1. 48 220
      npc/pre-re/jobs/novice/novice.txt
  2. 1 1
      npc/pre-re/other/powernpc.txt
  3. 24 98
      npc/pre-re/other/pvp.txt
  4. 48 220
      npc/re/jobs/novice/novice.txt
  5. 1 1
      npc/re/other/powernpc.txt
  6. 24 98
      npc/re/other/pvp.txt

+ 48 - 220
npc/pre-re/jobs/novice/novice.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Kisuka
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -12,6 +12,7 @@
 //===== Additional Comments: =================================
 //= 1.0 First version. [Kisuka]
 //= 1.1 Updated warps, savepoints, NPC locations. [Kisuka]
+//= 1.2 Cleaning. [Euphy]
 //============================================================
 
 //============================================================================
@@ -136,7 +137,6 @@ new_1-2,100,29,4	script	Sprakki#nv2	90,{
 	}
 }
 
-
 //============================================================================
 // Instructor Brade
 //============================================================================
@@ -189,7 +189,7 @@ new_1-2,100,105,4	script	Brade#nv	733,{
 		mes "The item window has 3 sections...";
 		next;
 		mes "[Instructor Brade]";
-		mes "consumable items, equipment and other items.";
+		mes "Consumable items, equipment, and other items.";
 		mes "If you want to use or equip items, double-click on the item or drag them into the Equipment Window.";
 		next;
 		mes "[Instructor Brade]";
@@ -282,12 +282,8 @@ new_1-2,100,105,4	script	Brade#nv	733,{
 	}
 	else if(job_novice_q == 5 || job_novice_q == 6) {
 		set .@EquipCheck,0;
-		if (getequipisequiped(EQI_SHOES)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_ARMOR)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_GARMET)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HEAD_TOP)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HAND_L)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HAND_R)) { set .@EquipCheck,.@EquipCheck+1; }
+		for(set .@i,1; .@i<7; set .@i,.@i+1)
+			if (getequipisequiped(.@i)) set .@EquipCheck, .@EquipCheck+1;
 		if(.@EquipCheck >= 4) {
 			if(job_novice_q == 5) {
 				mes "[Instructor Brade]";
@@ -626,7 +622,6 @@ new_1-2,32,172,4	script	Chocolat#nv	96,{
 	}
 }
 
-
 // ---------- Kafra ----------
 new_1-2,29,176,4	script	Kafra#nv	117,{
 	if(job_novice_q < 10) {
@@ -973,7 +968,7 @@ new_1-2,35,176,4	script	Soldier#nv	105,{
 		next;
 		mes "[Brade]";
 		mes "Try using the job manuals to find out the characteristics of each job's skills.";
-		mes "I will restore your HP and SP...Keep it up.";
+		mes "I will restore your HP and SP... Keep it up.";
 		percentheal 100,100;
 		skilleffect 28,9999;
 		close;
@@ -989,6 +984,24 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 //============================================================================
 // Job Guides (Real Combat Training)
 //============================================================================
+// --------------------------- Deletion Function ------------------------------
+function	script	F_NvErase	{
+	if (getarg(0,0)) {
+		if (checkquest(7123) == 0 || checkquest(7123) == 1) erasequest 7123;
+		if (checkquest(7124) == 0 || checkquest(7124) == 1) erasequest 7124;
+		if (checkquest(7126) == 0 || checkquest(7126) == 1) erasequest 7126;
+		if (checkquest(7127) == 0 || checkquest(7127) == 1) erasequest 7127;
+	}
+	nude;
+	if (countitem(2819)) delitem 2819,1;	// Swordsman_Manual
+	if (countitem(2820)) delitem 2820,1;	// Thief_Manual
+	if (countitem(2821)) delitem 2821,1;	// Acolyte_Manual
+	if (countitem(2822)) delitem 2822,1;	// Archer_Manual
+	if (countitem(2823)) delitem 2823,1;	// Merchant_Manual
+	if (countitem(2824)) delitem 2824,1;	// Mage_Manual
+	return;
+}
+
 // ---------------------------- Swordman Guide -------------------------------
 -	script	Swordman Guide#nv::NvSwd	728,{
 	if(job_novice_q < 16) {
@@ -1063,16 +1076,7 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 			mes "[Swordman Guildsman]";
 			mes "Here is the Swordman manual.";
 			mes "I'll just take any manuals from any other classes you have.";
-			next;
-			mes "[Swordman Guildsman]";
-			mes "Here is the Swordman manual.";
-			mes "I'll just take any manuals from any other classes you have.";
-			nude;
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2819,1;	// Swordsman_Manual
 			next;
 			mes "[Swordman Guildsman]";
@@ -1094,17 +1098,7 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 			mes "I see.";
 			mes "Then I'll end your training process and send you to the Swordman Guild.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "izlude",94,103;
 			warp "izlude_in",74,167;
 			end;
@@ -1235,12 +1229,7 @@ new_5-3,97,41,4	duplicate(NvSwd)	Swordman Guide#nv5	728
 			mes "[Mage Guide]";
 			mes "Here is the Mage Manual.";
 			mes "I will take the other job registration forms and manuals from you.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
+			callfunc "F_NvErase";
 			getitem 2824,1;	// Mage_Manual
 			next;
 			mes "[Mage Guide]";
@@ -1262,17 +1251,7 @@ new_5-3,97,41,4	duplicate(NvSwd)	Swordman Guide#nv5	728
 			mes "Welcome!!";
 			mes "I will send you to the Mage Guilds union after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "geffen",119,38;
 			warp "geffen_in",163,98;
 			end;
@@ -1389,12 +1368,7 @@ new_5-3,101,41,4	duplicate(NvMag)	Mage Guide#nv5	123
 			mes "[Thief Guild Member]";
 			mes "Here, please take the Thief manual.";
 			mes "I'll just take the other class manuals while I'm at it.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2820,1;	// Thief_Manual
 			next;
 			mes "[Thief Guild Member]";
@@ -1417,17 +1391,7 @@ new_5-3,101,41,4	duplicate(NvMag)	Mage Guide#nv5	123
 			mes "Ok, I see.";
 			mes "Welcome. Then your Novice training is totally complete and you will be sent to the Thief Guild immediately.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "morocc",150,100;
 			warp "moc_prydb1",99,185;
 			end;
@@ -1559,12 +1523,7 @@ new_5-3,105,41,4	duplicate(NvThf)	Thief Guide#nv5	118
 			mes "[Merchant Guide]";
 			mes "Here is the Merchant skill manual.";
 			mes "I will take other job manuals from you while I'm at it.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2823,1;	// Merchant_Manual
 			next;
 			mes "[Merchant Guide]";
@@ -1587,17 +1546,7 @@ new_5-3,105,41,4	duplicate(NvThf)	Thief Guide#nv5	118
 			mes "Welcome!!";
 			mes "I will send you to the Merchant Guild's union after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "alberta",29,231;
 			warp "alberta_in",62,44;
 			end;
@@ -1704,12 +1653,7 @@ new_5-3,109,41,4	duplicate(NvMer)	Merchant Guide#nv5	97
 			next;
 			mes "[Archer Guide]";
 			mes "I will take the other job manuals from you while you test the Archer manual out.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2822,1;	// Archer_Manual
 			next;
 			mes "[Archer Guide]";
@@ -1731,17 +1675,7 @@ new_5-3,109,41,4	duplicate(NvMer)	Merchant Guide#nv5	97
 			mes "Welcome!!";
 			mes "I will send you to the Archer Guild after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "payon",256,242;
 			warp "payon_in02",64,65;
 			end;
@@ -1807,12 +1741,7 @@ new_5-3,113,41,4	duplicate(NvArc)	Archer Guide#nv5	727
 			mes "[Prontera Acolyte]";
 			mes "Here you go, the instruction manual of an Acolyte.";
 			mes "I will take away those other job's manuals while you study this one.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2821,1;	// Acolyte_Manual
 			next;
 			mes "[Prontera Acolyte]";
@@ -1830,17 +1759,7 @@ new_5-3,113,41,4	duplicate(NvArc)	Archer Guide#nv5	727
 			mes "That's great.";
 			mes "Then I will completely end the Training Process and send you to the Cathedral of Prontera.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "prontera",117,72;
 			warp "prt_church",172,19;
 			end;
@@ -1969,17 +1888,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "Prontera, the Capital city of the Rune-Midgarts Kingdom.";
 				mes "Take care and may Freya bless you on your journey.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "prontera",122,77;
 				warp "prontera",121,76;
 				end;
@@ -1988,17 +1897,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "The desert city of Morocc was recently destroyed.";
 				mes "I will send you to the camp where the survivors are.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "moc_ruins",71,157;
 				warp "moc_ruins",70,158;
 				end;
@@ -2007,17 +1906,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "Just north of Payon you'll find the Archer Village.";
 				mes "Good luck on your journeys.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "payon",167,68;
 				warp "payon",172,111;
 				end;
@@ -2027,17 +1916,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "It's the main hub of all trades.";
 				mes "If you want to travel to other civilizations, Alberta is the only outlet.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "alberta",115,57;
 				warp "alberta",116,58;
 				end;
@@ -2047,17 +1926,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "I will send you near the Fountains.";
 				mes "Goddess Freya bless you.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "geffen",118,36;
 				warp "geffen",128,66;
 				end;
@@ -2133,55 +2002,14 @@ new_5-3,100,50,4	duplicate(NvPotato)	Merchant#nv5	93
 		mes "[Trainer Brutus]";
 		mes "I see, then let me guide you to another level. Which level do you want to go to?";
 		next;
-		for(set .@i,1; .@i<=5; set .@i,.@i+1) {
-			if(strnpcinfo(2) == "nv1") {
-				set .@select$,"Send me to Level 2:Send me to Level 3:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv2") {
-				set .@select$,"Send me to Level 1:Send me to Level 3:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv3") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv4") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 3:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv5") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 3:Send me to Level 4";
-			}
-		}
-		switch(select(""+.@select$+":Cancel")) {
-		case 1:
-			if(strnpcinfo(2) == "nv1") {
-				warp "new_2-3",96,21;
-			}else{
-				warp "new_1-3",96,21;
-			}
-			end;
-		case 2:
-			if(strnpcinfo(2) == "nv1" || strnpcinfo(2) == "nv2") {
-				warp "new_3-3",96,21;
-			}else{
-				warp "new_2-3",96,21;
-			}
-			end;
-		case 3:
-			if(strnpcinfo(2) == "nv4" || strnpcinfo(2) == "nv5") {
-				warp "new_3-3",96,21;
-			}else{
-				warp "new_4-3",96,21;
-			}
-			end;
-		case 4:
-			if(strnpcinfo(2) == "nv5") {
-				warp "new_4-3",96,21;
-			}else{
-				warp "new_5-3",96,21;
-			}
-			end;
-		case 5:
-			close;
+		for(set .@i,1; .@i<6; set .@i,.@i+1) {
+			if (!compare(strnpcinfo(2),"nv"+.@i))
+				set .@menu$, .@menu$+"Send me to Level "+.@i;
+			set .@menu$, .@menu$+":";
 		}
+		set .@i, select(.@menu$+"Cancel");
+		if (.@i < 7) warp "new_"+.@i+"-3",96,21;
+		close;
 	case 2:
 		mes "[Trainer Brutus]";
 		mes "You seem eager to fight.";

+ 1 - 1
npc/pre-re/other/powernpc.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= KarLaeda
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= Athena SVN 9000+
 //===== Additional Comments: =================================

+ 24 - 98
npc/pre-re/other/pvp.txt

@@ -3,15 +3,16 @@
 //===== By: ==================================================
 //= kobra_k88; L0ne_W0lf, Elias (og2)
 //===== Current Version: =====================================
-//= 2.0
+//= 2.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
 //= PvP NPCs that are found in the Inns in major cities.
-//= Includes Yoyo Mode, Nightmare Mode, and Event Mode
+//= Includes Yoyo Mode, Nightmare Mode, and Event Mode.
 //===== Additional Comments: ================================= 
 //= 2.0 Narrators/GateKeepers,etc. Translated from the Official 2011 [Elias]
 //= 2.1 Changed PVP Narrator and GateKeeper to Floating NPC [Elias]
+//= 2.2 Some cleaning. [Euphy]
 //============================================================
 
 -	script	PVP Narrator::pvpe	-1,{
@@ -257,7 +258,7 @@ geffen_in,67,63,4	duplicate(pvpe)	PVP Narrator#pe6	84
 close;
 }
 
-//Gate Keeper's Duplicates
+//Gate Keeper Duplicates
 morocc_in,144,142,4	duplicate(gkut)	Gate Keeper#gke1	83
 alberta_in,26,146,4	duplicate(gkut)	Gate Keeper#gke2	83
 prt_in,52,140,4	duplicate(gkut)	Gate Keeper#gke3	83
@@ -266,101 +267,26 @@ payon_in01,140,53,4	duplicate(gkut)	Gate Keeper#gke5	83
 
 //Fight square Reception Staff (Locations below)
 -	script	FSRS::fsr	-1,{
-if(strnpcinfo(4) == "pvp_y_room") {
-	set .@mapc1, getmapusers("pvp_y_8-1");
-	set .@mapc2, getmapusers("pvp_y_8-2");
-	set .@mapc3, getmapusers("pvp_y_8-3");
-	set .@mapc4, getmapusers("pvp_y_8-4");
-	set .@mapc5, getmapusers("pvp_y_8-5");
-	set .@showc1$, "Prontera [ "+.@mapc1+" / 128 ]";
-	set .@showc2$, "Izlude [ "+.@mapc2+" / 128 ]";
-	set .@showc3$, "Payon [ "+.@mapc3+" / 128 ]";
-	set .@showc4$, "Alberta [ "+.@mapc4+" / 128 ]";
-	set .@showc5$, "Morroc [ "+.@mapc5+" / 128 ]";
-	set .@showcexit$, "Cancel.";
-		switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
-		case 1:
-			if (.@mapc1 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-1",0,0; }
-		break;
-		case 2:
-			if (.@mapc2 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-2",0,0; }
-		break;
-		case 3:
-			if (.@mapc3 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-3",0,0; }
-		break;
-		case 4:
-			if (.@mapc4 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-4",0,0; }
-		break;
-		case 5:
-			if (.@mapc5 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-5",0,0; }
-		break;
-		case 6:
-			break;
-		}
-close;
+	if(strnpcinfo(4) == "pvp_y_room") {
+		setarray .@Maps$[0],"pvp_y_8-1","pvp_y_8-2","pvp_y_8-3","pvp_y_8-4","pvp_y_8-5";
+		setarray .@Name$[0],"Prontera","Izlude","Payon","Alberta","Morroc";
+		setarray .@Limit[0],128,128,128,128,128;
 	} else {
-	set .@mapc1, getmapusers("pvp_n_8-1");
-	set .@mapc2, getmapusers("pvp_n_8-2");
-	set .@mapc3, getmapusers("pvp_n_8-3");
-	set .@mapc4, getmapusers("pvp_n_8-4");
-	set .@mapc5, getmapusers("pvp_n_8-5");
-	set .@showc1$, "Sandwich [ "+.@mapc1+" / 64 ]";
-	set .@showc2$, "Lock on [ "+.@mapc2+" / 32 ]";
-	set .@showc3$, "Four Room [ "+.@mapc3+" / 32 ]";
-	set .@showc4$, "Under cross [ "+.@mapc4+" / 32 ]";
-	set .@showc5$, "Compass Room [ "+.@mapc5+" / 32 ]";
-	set .@showcexit$, "Cancel.";
-		switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
-		case 1:
-			if (.@mapc1 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-1",0,0; }
-		break;
-		case 2:
-			if (.@mapc2 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-2",0,0; }
-		break;
-		case 3:
-			if (.@mapc3 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-3",0,0; }
-		break;
-		case 4:
-			if (.@mapc4 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-4",0,0; }
-		break;
-		case 5:
-			if (.@mapc5 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-5",0,0; }
-		break;
-		case 6:
-			break;
-		}
-close;
-}
+		setarray .@Maps$[0],"pvp_n_8-1","pvp_n_8-2","pvp_n_8-3","pvp_n_8-4","pvp_n_8-5";
+		setarray .@Name$[0],"Sandwich","Lock on","Four Room","Under cross","Compass Room";
+		setarray .@Limit[0],64,32,32,32,32;
+	}
+	for(set .@i,0; .@i<5; set .@i,.@i+1)
+		set .@menu$, .@menu$+.@Name$[.@i]+" ["+getmapusers(.@Maps$[.@i])+" / "+.@Limit[.@i]+"]:";
+	set .@menu$, .@menu$+"Cancel.";
+	set .@i, select(.@menu$)-1;
+	if (.@i == 5) close;
+	if (getmapusers(.@Maps$[.@i]) >= .@Limit[.@i]) {
+		mes "[PVP Fight Square Reception Staff]";
+		mes "This map is currently full.";
+	}
+	else warp .@Maps$[.@i],0,0;
+	close;
 
 OnInit:
 	waitingroom "Free for all",0;
@@ -529,7 +455,7 @@ OnTouch:
 	mes "Did you have fun in Combat Square?";
 	mes "May I ask where you want to go?";
 	next;
-	switch(select("prontera.:morocc.:geffen.:payon.:alberta.:Cancel.")) {
+	switch(select("Prontera.:Morocc.:Geffen.:Payon.:Alberta.:Cancel.")) {
 	case 1: warp "prontera",107,60; end;
 	case 2: warp "morocc",157,96; end;
 	case 3: warp "geffen",120,36; end;

+ 48 - 220
npc/re/jobs/novice/novice.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Kisuka
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -12,6 +12,7 @@
 //===== Additional Comments: =================================
 //= 1.0 First version. [Kisuka]
 //= 1.1 Updated warps, savepoints, NPC locations. [Kisuka]
+//= 1.2 Cleaning. [Euphy]
 //============================================================
 
 //============================================================================
@@ -136,7 +137,6 @@ new_1-2,100,29,4	script	Sprakki#nv2	90,{
 	}
 }
 
-
 //============================================================================
 // Instructor Brade
 //============================================================================
@@ -189,7 +189,7 @@ new_1-2,100,105,4	script	Brade#nv	733,{
 		mes "The item window has 3 sections...";
 		next;
 		mes "[Instructor Brade]";
-		mes "consumable items, equipment and other items.";
+		mes "Consumable items, equipment, and other items.";
 		mes "If you want to use or equip items, double-click on the item or drag them into the Equipment Window.";
 		next;
 		mes "[Instructor Brade]";
@@ -282,12 +282,8 @@ new_1-2,100,105,4	script	Brade#nv	733,{
 	}
 	else if(job_novice_q == 5 || job_novice_q == 6) {
 		set .@EquipCheck,0;
-		if (getequipisequiped(EQI_SHOES)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_ARMOR)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_GARMET)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HEAD_TOP)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HAND_L)) { set .@EquipCheck,.@EquipCheck+1; }
-		if (getequipisequiped(EQI_HAND_R)) { set .@EquipCheck,.@EquipCheck+1; }
+		for(set .@i,1; .@i<7; set .@i,.@i+1)
+			if (getequipisequiped(.@i)) set .@EquipCheck, .@EquipCheck+1;
 		if(.@EquipCheck >= 4) {
 			if(job_novice_q == 5) {
 				mes "[Instructor Brade]";
@@ -626,7 +622,6 @@ new_1-2,32,172,4	script	Chocolat#nv	96,{
 	}
 }
 
-
 // ---------- Kafra ----------
 new_1-2,29,176,4	script	Kafra#nv	117,{
 	if(job_novice_q < 10) {
@@ -973,7 +968,7 @@ new_1-2,35,176,4	script	Soldier#nv	105,{
 		next;
 		mes "[Brade]";
 		mes "Try using the job manuals to find out the characteristics of each job's skills.";
-		mes "I will restore your HP and SP...Keep it up.";
+		mes "I will restore your HP and SP... Keep it up.";
 		percentheal 100,100;
 		skilleffect 28,9999;
 		close;
@@ -989,6 +984,24 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 //============================================================================
 // Job Guides (Real Combat Training)
 //============================================================================
+// --------------------------- Deletion Function ------------------------------
+function	script	F_NvErase	{
+	if (getarg(0,0)) {
+		if (checkquest(7123) == 0 || checkquest(7123) == 1) erasequest 7123;
+		if (checkquest(7124) == 0 || checkquest(7124) == 1) erasequest 7124;
+		if (checkquest(7126) == 0 || checkquest(7126) == 1) erasequest 7126;
+		if (checkquest(7127) == 0 || checkquest(7127) == 1) erasequest 7127;
+	}
+	nude;
+	if (countitem(2819)) delitem 2819,1;	// Swordsman_Manual
+	if (countitem(2820)) delitem 2820,1;	// Thief_Manual
+	if (countitem(2821)) delitem 2821,1;	// Acolyte_Manual
+	if (countitem(2822)) delitem 2822,1;	// Archer_Manual
+	if (countitem(2823)) delitem 2823,1;	// Merchant_Manual
+	if (countitem(2824)) delitem 2824,1;	// Mage_Manual
+	return;
+}
+
 // ---------------------------- Swordman Guide -------------------------------
 -	script	Swordman Guide#nv::NvSwd	728,{
 	if(job_novice_q < 16) {
@@ -1063,16 +1076,7 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 			mes "[Swordman Guildsman]";
 			mes "Here is the Swordman manual.";
 			mes "I'll just take any manuals from any other classes you have.";
-			next;
-			mes "[Swordman Guildsman]";
-			mes "Here is the Swordman manual.";
-			mes "I'll just take any manuals from any other classes you have.";
-			nude;
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2819,1;	// Swordsman_Manual
 			next;
 			mes "[Swordman Guildsman]";
@@ -1094,17 +1098,7 @@ new_5-3,96,30,4	duplicate(NvBrade)	Brade#nv5	733
 			mes "I see.";
 			mes "Then I'll end your training process and send you to the Swordman Guild.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "izlude",94,103;
 			warp "izlude_in",74,167;
 			end;
@@ -1235,12 +1229,7 @@ new_5-3,97,41,4	duplicate(NvSwd)	Swordman Guide#nv5	728
 			mes "[Mage Guide]";
 			mes "Here is the Mage Manual.";
 			mes "I will take the other job registration forms and manuals from you.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
+			callfunc "F_NvErase";
 			getitem 2824,1;	// Mage_Manual
 			next;
 			mes "[Mage Guide]";
@@ -1262,17 +1251,7 @@ new_5-3,97,41,4	duplicate(NvSwd)	Swordman Guide#nv5	728
 			mes "Welcome!!";
 			mes "I will send you to the Mage Guilds union after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "geffen",119,38;
 			warp "geffen_in",163,98;
 			end;
@@ -1389,12 +1368,7 @@ new_5-3,101,41,4	duplicate(NvMag)	Mage Guide#nv5	123
 			mes "[Thief Guild Member]";
 			mes "Here, please take the Thief manual.";
 			mes "I'll just take the other class manuals while I'm at it.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2820,1;	// Thief_Manual
 			next;
 			mes "[Thief Guild Member]";
@@ -1417,17 +1391,7 @@ new_5-3,101,41,4	duplicate(NvMag)	Mage Guide#nv5	123
 			mes "Ok, I see.";
 			mes "Welcome. Then your Novice training is totally complete and you will be sent to the Thief Guild immediately.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "morocc",150,100;
 			warp "moc_prydb1",99,185;
 			end;
@@ -1559,12 +1523,7 @@ new_5-3,105,41,4	duplicate(NvThf)	Thief Guide#nv5	118
 			mes "[Merchant Guide]";
 			mes "Here is the Merchant skill manual.";
 			mes "I will take other job manuals from you while I'm at it.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2823,1;	// Merchant_Manual
 			next;
 			mes "[Merchant Guide]";
@@ -1587,17 +1546,7 @@ new_5-3,105,41,4	duplicate(NvThf)	Thief Guide#nv5	118
 			mes "Welcome!!";
 			mes "I will send you to the Merchant Guild's union after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "alberta",29,231;
 			warp "alberta_in",62,44;
 			end;
@@ -1704,12 +1653,7 @@ new_5-3,109,41,4	duplicate(NvMer)	Merchant Guide#nv5	97
 			next;
 			mes "[Archer Guide]";
 			mes "I will take the other job manuals from you while you test the Archer manual out.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2822,1;	// Archer_Manual
 			next;
 			mes "[Archer Guide]";
@@ -1731,17 +1675,7 @@ new_5-3,109,41,4	duplicate(NvMer)	Merchant Guide#nv5	97
 			mes "Welcome!!";
 			mes "I will send you to the Archer Guild after you complete your Novice training.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "payon",256,242;
 			warp "payon_in02",64,65;
 			end;
@@ -1807,12 +1741,7 @@ new_5-3,113,41,4	duplicate(NvArc)	Archer Guide#nv5	727
 			mes "[Prontera Acolyte]";
 			mes "Here you go, the instruction manual of an Acolyte.";
 			mes "I will take away those other job's manuals while you study this one.";
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase";
 			getitem 2821,1;	// Acolyte_Manual
 			next;
 			mes "[Prontera Acolyte]";
@@ -1830,17 +1759,7 @@ new_5-3,113,41,4	duplicate(NvArc)	Archer Guide#nv5	727
 			mes "That's great.";
 			mes "Then I will completely end the Training Process and send you to the Cathedral of Prontera.";
 			close2;
-			if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-			if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-			if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-			if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-			nude;
-			if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-			if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-			if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-			if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-			if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-			if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+			callfunc "F_NvErase",1;
 			savepoint "prontera",117,72;
 			warp "prt_church",172,19;
 			end;
@@ -1969,17 +1888,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "Prontera, the Capital city of the Rune-Midgarts Kingdom.";
 				mes "Take care and may Freya bless you on your journey.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "prontera",122,77;
 				warp "prontera",121,76;
 				end;
@@ -1988,17 +1897,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "The desert city of Morocc was recently destroyed.";
 				mes "I will send you to the camp where the survivors are.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "moc_ruins",71,157;
 				warp "moc_ruins",70,158;
 				end;
@@ -2007,17 +1906,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "Just north of Payon you'll find the Archer Village.";
 				mes "Good luck on your journeys.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "payon",167,68;
 				warp "payon",172,111;
 				end;
@@ -2027,17 +1916,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "It's the main hub of all trades.";
 				mes "If you want to travel to other civilizations, Alberta is the only outlet.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "alberta",115,57;
 				warp "alberta",116,58;
 				end;
@@ -2047,17 +1926,7 @@ new_5-3,121,41,4	duplicate(NvBruce)	Bruce#nv5	57
 				mes "I will send you near the Fountains.";
 				mes "Goddess Freya bless you.";
 				close2;
-				if(checkquest(7123) == 0 || checkquest(7123) == 1) { erasequest 7123; }
-				if(checkquest(7124) == 0 || checkquest(7124) == 1) { erasequest 7124; }
-				if(checkquest(7126) == 0 || checkquest(7126) == 1) { erasequest 7126; }
-				if(checkquest(7127) == 0 || checkquest(7127) == 1) { erasequest 7127; }
-				nude;
-				if(countitem(2819) > 0) delitem 2819,1;	// Swordsman_Manual
-				if(countitem(2820) > 0) delitem 2820,1;	// Thief_Manual
-				if(countitem(2821) > 0) delitem 2821,1;	// Acolyte_Manual
-				if(countitem(2822) > 0) delitem 2822,1;	// Archer_Manual
-				if(countitem(2823) > 0) delitem 2823,1;	// Merchant_Manual
-				if(countitem(2824) > 0) delitem 2824,1;	// Mage_Manual
+				callfunc "F_NvErase",1;
 				savepoint "geffen",118,36;
 				warp "geffen",128,66;
 				end;
@@ -2133,55 +2002,14 @@ new_5-3,100,50,4	duplicate(NvPotato)	Merchant#nv5	93
 		mes "[Trainer Brutus]";
 		mes "I see, then let me guide you to another level. Which level do you want to go to?";
 		next;
-		for(set .@i,1; .@i<=5; set .@i,.@i+1) {
-			if(strnpcinfo(2) == "nv1") {
-				set .@select$,"Send me to Level 2:Send me to Level 3:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv2") {
-				set .@select$,"Send me to Level 1:Send me to Level 3:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv3") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 4:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv4") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 3:Send me to Level 5";
-			}
-			if(strnpcinfo(2) == "nv5") {
-				set .@select$,"Send me to Level 1:Send me to Level 2:Send me to Level 3:Send me to Level 4";
-			}
-		}
-		switch(select(""+.@select$+":Cancel")) {
-		case 1:
-			if(strnpcinfo(2) == "nv1") {
-				warp "new_2-3",96,21;
-			}else{
-				warp "new_1-3",96,21;
-			}
-			end;
-		case 2:
-			if(strnpcinfo(2) == "nv1" || strnpcinfo(2) == "nv2") {
-				warp "new_3-3",96,21;
-			}else{
-				warp "new_2-3",96,21;
-			}
-			end;
-		case 3:
-			if(strnpcinfo(2) == "nv4" || strnpcinfo(2) == "nv5") {
-				warp "new_3-3",96,21;
-			}else{
-				warp "new_4-3",96,21;
-			}
-			end;
-		case 4:
-			if(strnpcinfo(2) == "nv5") {
-				warp "new_4-3",96,21;
-			}else{
-				warp "new_5-3",96,21;
-			}
-			end;
-		case 5:
-			close;
+		for(set .@i,1; .@i<6; set .@i,.@i+1) {
+			if (!compare(strnpcinfo(2),"nv"+.@i))
+				set .@menu$, .@menu$+"Send me to Level "+.@i;
+			set .@menu$, .@menu$+":";
 		}
+		set .@i, select(.@menu$+"Cancel");
+		if (.@i < 7) warp "new_"+.@i+"-3",96,21;
+		close;
 	case 2:
 		mes "[Trainer Brutus]";
 		mes "You seem eager to fight.";

+ 1 - 1
npc/re/other/powernpc.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= KarLaeda
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= Athena SVN 9000+
 //===== Additional Comments: =================================

+ 24 - 98
npc/re/other/pvp.txt

@@ -3,15 +3,16 @@
 //===== By: ==================================================
 //= kobra_k88; L0ne_W0lf, Elias (og2)
 //===== Current Version: =====================================
-//= 2.0
+//= 2.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
 //= PvP NPCs that are found in the Inns in major cities.
-//= Includes Yoyo Mode, Nightmare Mode, and Event Mode
+//= Includes Yoyo Mode, Nightmare Mode, and Event Mode.
 //===== Additional Comments: ================================= 
 //= 2.0 Narrators/GateKeepers,etc. Translated from the Official 2011 [Elias]
 //= 2.1 Changed PVP Narrator and GateKeeper to Floating NPC [Elias]
+//= 2.2 Some cleaning. [Euphy]
 //============================================================
 
 -	script	PVP Narrator::pvpe	-1,{
@@ -257,7 +258,7 @@ geffen_in,67,63,4	duplicate(pvpe)	PVP Narrator#pe6	84
 close;
 }
 
-//Gate Keeper's Duplicates
+//Gate Keeper Duplicates
 morocc_in,144,142,4	duplicate(gkut)	Gate Keeper#gke1	83
 alberta_in,26,146,4	duplicate(gkut)	Gate Keeper#gke2	83
 prt_in,52,140,4	duplicate(gkut)	Gate Keeper#gke3	83
@@ -266,101 +267,26 @@ payon_in01,140,53,4	duplicate(gkut)	Gate Keeper#gke5	83
 
 //Fight square Reception Staff (Locations below)
 -	script	FSRS::fsr	-1,{
-if(strnpcinfo(4) == "pvp_y_room") {
-	set .@mapc1, getmapusers("pvp_y_8-1");
-	set .@mapc2, getmapusers("pvp_y_8-2");
-	set .@mapc3, getmapusers("pvp_y_8-3");
-	set .@mapc4, getmapusers("pvp_y_8-4");
-	set .@mapc5, getmapusers("pvp_y_8-5");
-	set .@showc1$, "Prontera [ "+.@mapc1+" / 128 ]";
-	set .@showc2$, "Izlude [ "+.@mapc2+" / 128 ]";
-	set .@showc3$, "Payon [ "+.@mapc3+" / 128 ]";
-	set .@showc4$, "Alberta [ "+.@mapc4+" / 128 ]";
-	set .@showc5$, "Morroc [ "+.@mapc5+" / 128 ]";
-	set .@showcexit$, "Cancel.";
-		switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
-		case 1:
-			if (.@mapc1 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-1",0,0; }
-		break;
-		case 2:
-			if (.@mapc2 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-2",0,0; }
-		break;
-		case 3:
-			if (.@mapc3 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-3",0,0; }
-		break;
-		case 4:
-			if (.@mapc4 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-4",0,0; }
-		break;
-		case 5:
-			if (.@mapc5 >= 128) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_y_8-5",0,0; }
-		break;
-		case 6:
-			break;
-		}
-close;
+	if(strnpcinfo(4) == "pvp_y_room") {
+		setarray .@Maps$[0],"pvp_y_8-1","pvp_y_8-2","pvp_y_8-3","pvp_y_8-4","pvp_y_8-5";
+		setarray .@Name$[0],"Prontera","Izlude","Payon","Alberta","Morroc";
+		setarray .@Limit[0],128,128,128,128,128;
 	} else {
-	set .@mapc1, getmapusers("pvp_n_8-1");
-	set .@mapc2, getmapusers("pvp_n_8-2");
-	set .@mapc3, getmapusers("pvp_n_8-3");
-	set .@mapc4, getmapusers("pvp_n_8-4");
-	set .@mapc5, getmapusers("pvp_n_8-5");
-	set .@showc1$, "Sandwich [ "+.@mapc1+" / 64 ]";
-	set .@showc2$, "Lock on [ "+.@mapc2+" / 32 ]";
-	set .@showc3$, "Four Room [ "+.@mapc3+" / 32 ]";
-	set .@showc4$, "Under cross [ "+.@mapc4+" / 32 ]";
-	set .@showc5$, "Compass Room [ "+.@mapc5+" / 32 ]";
-	set .@showcexit$, "Cancel.";
-		switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
-		case 1:
-			if (.@mapc1 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-1",0,0; }
-		break;
-		case 2:
-			if (.@mapc2 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-2",0,0; }
-		break;
-		case 3:
-			if (.@mapc3 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-3",0,0; }
-		break;
-		case 4:
-			if (.@mapc4 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-4",0,0; }
-		break;
-		case 5:
-			if (.@mapc5 >= 64) {
-				mes "[PVP Fight Square Reception Staff]";
-				mes "This map is currently full.";
-			} else { warp "pvp_n_8-5",0,0; }
-		break;
-		case 6:
-			break;
-		}
-close;
-}
+		setarray .@Maps$[0],"pvp_n_8-1","pvp_n_8-2","pvp_n_8-3","pvp_n_8-4","pvp_n_8-5";
+		setarray .@Name$[0],"Sandwich","Lock on","Four Room","Under cross","Compass Room";
+		setarray .@Limit[0],64,32,32,32,32;
+	}
+	for(set .@i,0; .@i<5; set .@i,.@i+1)
+		set .@menu$, .@menu$+.@Name$[.@i]+" ["+getmapusers(.@Maps$[.@i])+" / "+.@Limit[.@i]+"]:";
+	set .@menu$, .@menu$+"Cancel.";
+	set .@i, select(.@menu$)-1;
+	if (.@i == 5) close;
+	if (getmapusers(.@Maps$[.@i]) >= .@Limit[.@i]) {
+		mes "[PVP Fight Square Reception Staff]";
+		mes "This map is currently full.";
+	}
+	else warp .@Maps$[.@i],0,0;
+	close;
 
 OnInit:
 	waitingroom "Free for all",0;
@@ -529,7 +455,7 @@ OnTouch:
 	mes "Did you have fun in Combat Square?";
 	mes "May I ask where you want to go?";
 	next;
-	switch(select("prontera.:morocc.:geffen.:payon.:alberta.:Cancel.")) {
+	switch(select("Prontera.:Morocc.:Geffen.:Payon.:Alberta.:Cancel.")) {
 	case 1: warp "prontera",107,60; end;
 	case 2: warp "morocc",157,96; end;
 	case 3: warp "geffen",120,36; end;