فهرست منبع

* Optimized "3rd Item Seller" script (re\merchants\3rd_trader.txt)
* Optimized Eden Quest lv. 71-85 (re\quests\eden\)
* Deleted a duplicate NPC, bugreport:6564 (re\quests\quests_dicastes.txt)
* Other small fixes

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

euphyy 12 سال پیش
والد
کامیت
ef338e07c2

+ 1 - 1
npc/other/divorce.txt

@@ -8,7 +8,7 @@
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= [Aegis COnversion]
+//= [Aegis Conversion]
 //= Official Divorce script.
 //= Added isloggedin() check, even though Aegis doesn't do it;
 //= should be able to divorce even when the spouse is not online.

+ 1 - 1
npc/other/turbo_track.txt

@@ -12,7 +12,7 @@
 //= - Normal (Non-PVP) - 4/8/16 Person
 //= - Expert (PVP) - 4/8/16 Person
 //===== Additional Comments: =================================
-//= 0.x	Previous authors: L0ne_W0lf, Kisuka, Elias
+//= 0.x Previous authors: L0ne_W0lf, Kisuka, Elias
 //= 1.0 Merged Turbo Track. [Joseph]
 //============================================================
 

+ 2 - 2
npc/quests/quests_morocc.txt

@@ -2033,7 +2033,7 @@ moc_ruins,137,70,3	script	Book-Touching Man#garas	48,{
 		if (barmunt_crow == 0) {
 			mes "^660000Morroc, the City of the Desert, has been completely devastated by Satan Morroc.^000000";
 			next;
-			mes "^660000The people of Morroc were resilient enough to endure the regions harsh weather, but their toughness to the weather could not prepare them enough as they witnessed the destruction brought down upon the city by Satan Morroc.^000000";
+			mes "^660000The people of Morroc were resilient enough to endure the region's harsh weather, but their toughness to the weather could not prepare them enough as they witnessed the destruction brought down upon the city by Satan Morroc.^000000";
 			next;
 			mes "^660000This man, who looks as dry and thin as a fish dried up under the sun, still has a smile that reminds you of a benevolent god, and is touching a book in his hand.^000000";
 			next;
@@ -2998,7 +2998,7 @@ yuno_in04,117,102,3	script	Old News Scrapbook	844,{
 				mes "- Culture Page -";
 				mes "- Please Save My Water -";
 				mes " ";
-				mes "��A recently acclaimed young author,";
+				mes "A recently acclaimed young author,";
 				mes "Jean Cadoc's new series";
 				mes "'Please Save My Water' has been ranked at the top";
 				mes "for the most checked-out book in libraries.";

+ 133 - 427
npc/re/merchants/3rd_trader.txt

@@ -1,356 +1,179 @@
 //===== rAthena Script ======================================= 
 //= 3rd Item Seller
 //===== By: ================================================== 
-//= Masao
-//= Mercurial
+//= Masao, Mercurial
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.2
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= [Aegis Conversion]
-//= Sells some 3rd Job related Items.
+//= Sells some 3rd Job related items.
 //===== Additional Comments: ================================= 
-//= v1.1 Optimized Poison Herb Salesman NPC
-//= v1.0 First Version.
+//= 1.0 First Version.
+//= 1.1 Optimized Poison Herb Salesman NPC
+//= 1.2 Optimized and standardized. [Euphy]
 //============================================================ 
 
-
 job3_guil01,79,96,3	script	Poison Herb Salesman::PHS	877,{
-	
-	// We are unsure about agis script command equivalent please refer to 3rd_trader.sc line 3
-	//if( (countitem(1201)>=30000) || checkweight() )
-	
-	for(set .x,0; .x<getarraysize(.herbs); set .x,.x+1)
-	{
-		if(!checkweight(.herbs[.x],.maxHerbs))
-		{
-			mes "- Wait a minute !! -";
-			mes "- Currently you're carrying -";
-			mes "- too many items with you. -";
-			mes "- Please try again -";
-			mes "- after you loose some weight. -";
-			close;
-		}
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+		mes "- Wait a minute !! -";
+		mes "- Currently you're carrying -";
+		mes "- too many items with you. -";
+		mes "- Please try again -";
+		mes "- after you lose some weight. -";
+		close;
 	}
-	
-	mes .npcName$;
+	mes "[Poison Herb Salesman]";
 	mes "I am the professional";
 	mes "poison herb seller.";
 	mes "Which one do you want?";
-	mes "They cost "+.herbCost[0]+" zeny each!";
-	set .herbType,select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
+	mes "They cost 4,000 zeny each!";
+	set .@i, select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
 	next;
-	if(.herbType==(getarraysize(.herbs)-1))
-	{
-		mes .npcName$;
-		mes "You can only buy";
-		mes "1 Poison Kit and it costs "+.herbCost[(getarraysize(.herbs)-1)]+" zeny.";
-		mes "Will you buy it?";
-		
-		switch(select("Yes, I will.:No, I won't."))
-		{
-			case 1:
-				if(Zeny < .poisHerbCost)
-				{
-					next;
-					mes .npcName$;
-					mes "Please check the money you have.";
-					mes "It doesn't seem like you have enough money.";
-					close;
-				}
-				else
-				{
-					set Zeny,Zeny-.poisHerbCost;
-					getitem .herbs[getarraysize(.herbs)-1],1;
-					next;
-					mes .npcName$;
-					mes "Thank you. See you~!";
-					close;
-				}
-			break;
-			case 2:
-				next;
-				mes "[Poison Herb Salesman]";
-				mes "Well, I see. See you~!";
-				close;
-			break;
-		}
-	}
-	else
-	{
-		mes .npcName$;
+	if (.@i < 6) {
+		mes "[Poison Herb Salesman]";
 		mes "How many do you want? You can";
-		mes "only buy a maximum of "+.maxHerbs+" ea";
+		mes "only buy a maximum of 2000 ea";
 		mes "and if you want to cancel, enter '0'.";
-		input .herbsCount;
-		if(.herbsCount<=0) // check if player canceled herb purchase
-		{
-			next;
-			mes .npcName$;
+		next;
+		input .@amount;
+		mes "[Poison Herb Salesman]";
+		if (.@amount == 0) {
 			mes "You've cancelled the trade.";
 			close;
 		}
-		else if(.herbsCount>.maxHerbs) // checks if herbs count exceeds maxHerbs limit
-		{
-			next;
-			mes .npcName$;
+		if (.@amount > 2000) {
 			mes "Please check the maximum";
 			mes "amount and then try again.";
 			close;
 		}
-		else if(.herbsCount+countitem(.herbs[.herbType]) > .maxItemStack) // Check item stack according to Aegis script
-		{
-			mes "- Wait a minute !! -";
-			mes "- Currently you're carrying -";
-			mes "- too many items with you. -";
-			mes "- Please try again -";
-			mes "- after you loose some weight. -";
+		if (Zeny < .@amount*4000) {
+			mes "Please check the money you have.";
+			mes "It doesn't seem like you have enough money.";
 			close;
 		}
-		else
-		{
-			if(Zeny<(.herbsCount*.herbCost)) // Check if Zeny is enough
-			{
-				next;
-				mes .npcName$;
-				mes "Please check the money you have.";
-				mes "It doesn't seem like you have enough money.";
-				close;
-			}
-			else // all requirements are met give the item
-			{
-				set Zeny,Zeny-(.herbsCount*.herbCost);
-				getitem .herbs[.herbType],.herbsCount;
-				next;
-				mes .npcName$;
-				mes "Thank you. See you~!";
-				close;
-			}
+		set Zeny, Zeny-(.@amount*4000);
+		getitem 7932+.@i,.@amount;
+		mes "Thank you. See you~!";
+		close;
+	} else {
+		mes "[Poison Herb Salesman]";
+		mes "You can only buy";
+		mes "1 Poison Kit and it costs 5,000 zeny.";
+		mes "Will you buy it?";
+		next;
+		if(select("Yes, I will.:No, I won't.") == 2) {
+			mes "[Poison Herb Salesman]";
+			mes "Well, I see. See you~!";
+			close;
 		}
+		mes "[Poison Herb Salesman]";
+		if (Zeny < 5000) {
+			mes "Please check the money you have.";
+			mes "It doesn't seem like you have enough money.";
+			close;
+		}
+		set Zeny, Zeny-5000;
+		getitem 7931,1;
+		mes "[Poison Herb Salesman]";
+		mes "Thank you. See you~!";
+		close;
 	}
-OnInit:
-// Initialize Item Id's on script engine Init Event
-	set .npcName$,"[Poison Herb Salesman]";
-	setarray .herbs[0],7932,7933,7934,7935,7936,7937,7931;
-	setarray .herbCost[0],4000,4000,4000,4000,4000,4000,5000;
-	set .maxHerbs,2000;
-	set .poisHerbCost,5000;
-	set .maxItemStack,30000;
 }
-
+morocc,190,96,4	duplicate(PHS)	Poison Herb Salesman#moc	877
+lhz_in02,16,205,4	duplicate(PHS)	Poison Herb Salesman#lhz	877
 
 job3_rune01,90,62,3	script	Rune Salesman::runesale	853,{
-
-	if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
-	{
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
-
 	mes "[Rune Salesman]";
 	mes "Hey, do you need Runes?!";
 	mes "I sell all kinds of Rune Stones!";
 	mes "What kind of Rune do you want?";
 	next;
-	switch(select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones."))
-	{
-	case 1:
-		mes "[Rune Salesman]";
+	set .@i, select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones.");
+	mes "[Rune Salesman]";
+	if (.@i == 1) {
 		mes "High-quality Runes!";
 		mes "They cost 2,500 zeny each!";
-		mes "Tell me how many you want to buy";
-		mes "and remember, you can only";
-		mes "buy a maximum amount of 2000 ea!";
-		next;
-		input .@amount;
-		if(.@amount == 0)
-		{
-			mes "[Rune Salesman]";
-			mes "You're not buying? Go away!";
-			close;
-		}
-		else if(.@amount > 2000)
-		{
-			mes "[Rune Salesman]";
-			mes "Please check the maximum";
-			mes "amount and then come back to me again!";
-			close;
-		}
-		else if(Zeny < .@amount * 2500)
-		{
-			mes "[Rune Salesman]";
-			mes "Money! Money!";
-			mes "You are short of money!";
-			mes "Check the amount of money you have!!";
-			close;
-		}
-		set .@checkweight,.@amount * 100;
-		if (MaxWeight < .@checkweight)
-		{
-			mes "[Rune Salesman]";
-			mes "You're not able to carry it, so why are you trying to buy it?!";
-			close;
-		}
-		set Zeny,Zeny - .@amount * 2500;
-		getitem 12734,.@amount;
-		mes "[Rune Salesman]";
-		mes "You can buy more again.";
-		mes "So, see you later.";
-		close;
-	case 2:
-		mes "[Rune Salesman]";
+		setarray .@rune[0],12734,2500;
+	} else {
 		mes "Ordinary Rune Stones?";
 		mes "They cost 1,000 zeny each!";
-		mes "Tell me how many you want to buy";
-		mes "and remember, you can only";
-		mes "buy a maximum amount of 2000 ea!";
-		next;
-		input .@amount;
-		if(.@amount == 0)
-		{
-			mes "[Rune Salesman]";
-			mes "You're not buying? Go away!";
-			close;
-		}
-		else if(.@amount > 2000)
-		{
-			mes "[Rune Salesman]";
-			mes "Please check the maximum";
-			mes "amount and then come back to me again!";
-			close;
-		}
-		else if(Zeny < .@amount * 1000)
-		{
-			mes "[Rune Salesman]";
-			mes "Money! Money!";
-			mes "You are short of money!";
-			mes "Check the amount of money you have!!";
-			close;
-		}
-		set .@checkweight,.@amount * 100;
-		if (MaxWeight < .@checkweight)
-		{
-			mes "[Rune Salesman]";
-			mes "You're not able to carry it, so why are you trying to buy it?!";
-			close;
-		}
-		set Zeny,Zeny - .@amount * 1000;
-		getitem 12737,.@amount;
-		mes "[Rune Salesman]";
-		mes "You can buy more again.";
-		mes "So, see you later.";
+		setarray .@rune[0],12737,1000;
+	}
+	mes "Tell me how many you want to buy";
+	mes "and remember, you can only";
+	mes "buy a maximum amount of 2000 ea!";
+	next;
+	input .@amount;
+	mes "[Rune Salesman]";
+	if (.@amount == 0) {
+		mes "You're not buying? Go away!";
+		close;
+	}
+	if (.@amount > 2000) {
+		mes "Please check the maximum";
+		mes "amount and then come back to me again!";
+		close;
+	}
+	if (Zeny < .@amount*.@rune[1]) {
+		mes "Money! Money!";
+		mes "You are short of money!";
+		mes "Check the amount of money you have!!";
+		close;
+	}
+	if (!checkweight(.@rune[0],.@amount)) {
+		mes "You're not able to carry it, so why are you trying to buy it?!";
 		close;
 	}
+	set Zeny, Zeny-(.@amount*.@rune[1]);
+	getitem .@rune[0],.@amount;
+	mes "You can buy more again.";
+	mes "So, see you later.";
+	close;
 }
+prontera,168,228,3	duplicate(runesale)	Rune Salesman#1	853
 
 job3_guil01,91,93,3	script	Rare Herb Collector	49,{
-
-	if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
-	{
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
-
-	if (Class == 4059 || Class == 4065)
-	{
+	if (Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T || Class == Job_Baby_Cross) {
 		mes "[Rare Poison Herb Collector]";
 		mes "I wander around the world and collect rare poison herbs. Recently, I am dealing in the herb called Izidor. If you are interested, you can buy them.";
 		next;
-		switch(select("How can I buy them?:Exchange it with Animal Blood:Exchange it with a Bitter Herb:Exchange it with a Deadly Noxious Herb:Exchange it with a Frozen Rose:Exchange it with Ment:Exchange it with Hinalle"))
-		{
-		case 1:
+		set .@i, select("How can I buy them?:Exchange it with Animal Blood:Exchange it with a Bitter Herb:Exchange it with a Deadly Noxious Herb:Exchange it with a Frozen Rose:Exchange it with Ment:Exchange it with Hinalle")-1;
+		if (.@i == 0) {
 			mes "[Rare Poison Herb Collector]";
 			mes "You can buy any of those items for 10,000 zeny: Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or Hinalle. ";
 			next;
 			mes "[Rare Poison Herb Collector]";
 			mes "Why I ask for money? That is just to pay a little respect to a collector like me. Ha ha ha...";
 			close;
-		case 2:
-			if ((countitem(702) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 702,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
-				close;
-			}
-			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
-			close;
-		case 3:
-			if ((countitem(621) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 621,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
-				close;
-			}
-			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
-			close;
-		case 4:
-			if ((countitem(631) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 631,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
-				close;
-			}
-			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
-			close;
-		case 5:
-			if ((countitem(749) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 749,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
-				close;
-			}
-			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
-			close;
-		case 6:
-			if ((countitem(605) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 605,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
-				close;
-			}
+		} else {
+			setarray .@exchange[1],702,621,631,749,605,703;
 			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
-			close;
-		case 7:
-			if ((countitem(703) > 0) && (Zeny > 9999))
-			{
-				mes "[Rare Poison Herb Collector]";
-				mes "Thank you. I've received your payment.";
-				delitem 703,1;
-				set Zeny,Zeny - 10000;
-				getitem 709,1;
+			if (!countitem(.@exchange[.@i]) || Zeny < 10000) {
+				mes "Hey, try again after you've prepared all the requirements for the exchange.";
 				close;
 			}
-			mes "[Rare Poison Herb Collector]";
-			mes "Hey, try again after you've prepared all the requirements for the exchange.";
+			mes "Thank you. I've received your payment.";
+			delitem .@exchange[.@i],1;
+			set Zeny, Zeny-10000;
+			getitem 709,1;
 			close;
 		}
 	}
@@ -360,165 +183,48 @@ job3_guil01,91,93,3	script	Rare Herb Collector	49,{
 }
 
 gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{
-
-	if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
-	{
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
-
-    mes "[Point Salesman]";
-	mes "Hello. I'm selling a catalyst that are called ^FF0000Points^000000 for Sorcerers. What would you like?";
+	mes "[Point Salesman]";
+	mes "Hello. I'm selling a catalyst called ^FF0000Points^000000 for Sorcerers. What would you like?";
 	next;
-	switch(select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel"))
-	{
-	case 1:
-        mes "[Point Salesman]";
-		mes "You have chosen Scarlet Points.";
-		mes "How many do you want?";
-		mes "If you want to cancel, enter 0.";
-		next;
-		input .@amount;
-        if (.@amount == 0)
-		{
-            mes "[Point Salesman]";
-            mes "You've cancelled the trade.";
-            close;
-		}
-		set .@po_weight,.@amount * 10;
-		set .@tt_weight,MaxWeight - .@po_weight;
-		set .@po_money,.@amount * 200;
-		if (.@tt_weight > 0)
-		{
-			if (Zeny >= .@po_money)
-			{
-				set Zeny,Zeny - .@po_money;
-				getitem 6360,.@amount;
-				mes "[Point Salesman]";
-				mes "Thank you very much. See you~!";
-				close;
-			}
-			mes "[Point Salesman]";
-			mes "You don't seem to have enough money.";
-			close;
-		}
-		mes "[Point Salesman]";
-		mes "You don't have enough space in your inventory to buy this amount.";
+	set .@i, select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel")-1;
+	mes "[Point Salesman]";
+	if (.@i == 4) {
+		mes "You can't find the stuff you need?";
 		close;
-    case 2:
-        mes "[Point Salesman]";
-		mes "You have chosen Lime Green Points.";
-		mes "How many do you want?";
-		mes "If you want to cancel, enter 0.";
-		next;
-		input .@amount;
-        if (.@amount == 0)
-		{
-            mes "[Point Salesman]";
-            mes "You've cancelled the trade.";
-            close;
-		}
-		set .@po_weight,.@amount * 10;
-		set .@tt_weight,MaxWeight - .@po_weight;
-		set .@po_money,.@amount * 200;
-		if (.@tt_weight > 0)
-		{
-			if (Zeny >= .@po_money)
-			{
-				set Zeny,Zeny - .@po_money;
-				getitem 6363,.@amount;
-				mes "[Point Salesman]";
-				mes "Thank you very much. See you~!";
-				close;
-			}
-			mes "[Point Salesman]";
-			mes "You don't seem to have enough money.";
-			close;
-		}
-		mes "[Point Salesman]";
-		mes "You don't have enough space in your inventory to buy this amount.";
+	}
+	setarray .@itemid[0],6360,6363,6361,6362;
+	setarray .@color$[0],"Scarlet","Lime Green","Indigo","Yellow Wish";
+	mes "You have chosen "+.@color$[.@i]+" Points.";
+	mes "How many do you want?";
+	mes "If you want to cancel, enter 0.";
+	next;
+	input .@amount;
+	mes "[Point Salesman]";
+	if (.@amount == 0) {
+		mes "You've cancelled the trade.";
 		close;
-    case 3:
-        mes "[Point Salesman]";
-		mes "You have chosen Indigo Points.";
-		mes "How many do you want?";
-		mes "If you want to cancel, enter 0.";
-		next;
-		input .@amount;
-        if (.@amount == 0)
-		{
-            mes "[Point Salesman]";
-            mes "You've cancelled the trade.";
-            close;
-		}
-		set .@po_weight,.@amount * 10;
-		set .@tt_weight,MaxWeight - .@po_weight;
-		set .@po_money,.@amount * 200;
-		if (.@tt_weight > 0)
-		{
-			if (Zeny >= .@po_money)
-			{
-				set Zeny,Zeny - .@po_money;
-				getitem 6361,.@amount;
-				mes "[Point Salesman]";
-				mes "Thank you very much. See you~!";
-				close;
-			}
-			mes "[Point Salesman]";
-			mes "You don't seem to have enough money.";
-			close;
-		}
-		mes "[Point Salesman]";
-		mes "You don't have enough space in your inventory to buy this amount.";
+	}
+	if (Zeny < .@amount*200) {
+		mes "You don't seem to have enough money.";
 		close;
-    case 4:
-        mes "[Point Salesman]";
-		mes "You have chosen Yellow Wish Points.";
-		mes "How many do you want?";
-		mes "If you want to cancel, enter 0.";
-		next;
-		input .@amount;
-        if (.@amount == 0)
-		{
-            mes "[Point Salesman]";
-            mes "You've cancelled the trade.";
-            close;
-		}
-		set .@po_weight,.@amount * 10;
-		set .@tt_weight,MaxWeight - .@po_weight;
-		set .@po_money,.@amount * 200;
-		if (.@tt_weight > 0)
-		{
-			if (Zeny >= .@po_money)
-			{
-				set Zeny,Zeny - .@po_money;
-				getitem 6362,.@amount;
-				mes "[Point Salesman]";
-				mes "Thank you very much. See you~!";
-				close;
-			}
-			mes "[Point Salesman]";
-			mes "You don't seem to have enough money.";
-			close;
-		}
-		mes "[Point Salesman]";
+	}
+	if (!checkweight(.@itemid[.@i],.@amount)) {
 		mes "You don't have enough space in your inventory to buy this amount.";
 		close;
-    case 5:
-        mes "[Point Salesman]";
-		mes "You can't find the stuff you need?";
-        close;
 	}
+	set Zeny, Zeny-(.@amount*200);
+	getitem .@itemid[.@i],.@amount;
+	mes "Thank you very much. See you~!";
+	close;
 }
-
-
-morocc,190,96,4	duplicate(PHS)	Poison Herb Salesman#moc	877
-lhz_in02,16,205,4	duplicate(PHS)	Poison Herb Salesman#lhz	877
-prontera,168,228,3	duplicate(runesale)	Rune Salesman#1	853
 comodo,241,103,6	duplicate(pss)	Point Salesman#1	700
 alberta,105,52,7	duplicate(pss)	Point Salesman#2	700
 veins,202,128,6	duplicate(pss)	Point Salesman#3	700

+ 135 - 469
npc/re/quests/eden/71-85.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -11,6 +11,7 @@
 //===== Additional Comments: =================================
 //= 1.0 First Version.
 //= 1.1 Some little optimization here and there. [Masao]
+//= 1.2 Optimized. [Euphy]
 //============================================================
 
 moc_para01,44,38,3	script	Mission [71 - 85]	857,{
@@ -33,36 +34,11 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 			mes "- Dungeon. I will wait for -";
 			mes "- you in front of the -";
 			mes "- western gate. -";
-			next;
-			switch (select("Accept mission.:Decline mission.")) {
-			case 1:
-				if (slv_quest == 2 || slv_quest == 3 || slv_quest == 4 || slv_quest == 5 || slv_quest == 6) {
-					mes "- You are already on -";
-					mes "- another mission. -";
-					mes "- You can't do multiple -";
-					mes "- missions. Finish your -";
-					mes "- current mission first. -";
-					close;
-				}
-				if (checkquest(10102) == -1 || checkquest(10102) == 0) {
-					setquest 10102;
-					set slv_quest,1;
-					mes "- Good. Now go find Meidi -";
-					mes "- at the western gate -";
-					mes "- in Morroc. -";
-					close;
-				}
-				mes "- You are already on -";
-				mes "- or have recently -";
-				mes "- completed a mission. -";
-				mes "- You can't do anymore -";
-				mes "- missions right now. -";
-				close;
-			case 2:
-				mes "- I don't want to do -";
-				mes "- a mission right now. -";
-				close;
-			}
+			callsub L_Quest,10102,1;
+			mes "- Good. Now go find Meidi -";
+			mes "- at the western gate -";
+			mes "- in Morroc. -";
+			close;
 		case 2:
 			mes "- Glast Heim -";
 			mes "- I am Ancellia. -";
@@ -70,35 +46,10 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 			mes "- hunting monsters -";
 			mes "- in Glast Heim.-";
 			mes "- Please help me. -";
-			next;
-			switch (select("Accept mission.:Decline mission.")) {
-			case 1:
-				if (slv_quest == 1 || slv_quest == 3 || slv_quest == 4 || slv_quest == 5 || slv_quest == 6) {
-					mes "- You are already on -";
-					mes "- another mission. -";
-					mes "- You can't do multiple -";
-					mes "- missions. Finish your -";
-					mes "- current mission first. -";
-					close;
-				}
-				if (checkquest(10103) == -1 || checkquest(10103) == 0) {
-					setquest 10103;
-					set slv_quest,2;
-					mes "- Look for Ancellia. -";
-					mes "- in Geffen. -";
-					close;
-				}
-				mes "- You are already on -";
-				mes "- or have recently -";
-				mes "- completed a mission. -";
-				mes "- You can't do anymore -";
-				mes "- missions right now. -";
-				close;
-			case 2:
-				mes "- I don't want to do -";
-				mes "- a mission right now. -";
-				close;
-			}
+			callsub L_Quest,10103,2;
+			mes "- Look for Ancellia. -";
+			mes "- in Geffen. -";
+			close;
 		case 3:
 			mes "- Juno Area -";
 			mes "- I want to go to Juno, -";
@@ -107,35 +58,10 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 			mes "- strong for me. Come -";
 			mes "- visit me in Al De Baran. -";
 			mes "- My name is Jeanbai. -";
-			next;
-			switch (select("Accept mission.:Decline mission.")) {
-			case 1:
-				if (slv_quest == 1 || slv_quest == 2 || slv_quest == 4 || slv_quest == 5 || slv_quest == 6) {
-					mes "- You are already on -";
-					mes "- another mission. -";
-					mes "- You can't do multiple -";
-					mes "- missions. Finish your -";
-					mes "- current mission first. -";
-					close;
-				}
-				if (checkquest(10104) == -1 || checkquest(10104) == 0) {
-					setquest 10104;
-					set slv_quest,3;
-					mes "- Look for Jeanbai -";
-					mes "- in Al De Baran. -";
-					close;
-				}
-				mes "- You are already on -";
-				mes "- or have recently -";
-				mes "- completed a mission. -";
-				mes "- You can't do anymore -";
-				mes "- missions right now. -";
-				close;
-			case 2:
-				mes "- I don't want to do -";
-				mes "- a mission right now. -";
-				close;
-			}
+			callsub L_Quest,10104,3;
+			mes "- Look for Jeanbai -";
+			mes "- in Al De Baran. -";
+			close;
 		case 4:
 			mes "- Clock Tower -";
 			mes "- A Clock is the best thing! -";
@@ -143,70 +69,20 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 			mes "- some monster inside of.-";
 			mes "- the Clock Tower, -";
 			mes "- Risingeter. -";
-			next;
-			switch (select("Accept mission.:Decline mission.")) {
-			case 1:
-				if (slv_quest == 1 || slv_quest == 2 || slv_quest == 4 || slv_quest == 5 || slv_quest == 6) {
-					mes "- You are already on -";
-					mes "- another mission. -";
-					mes "- You can't do multiple -";
-					mes "- missions. Finish your -";
-					mes "- current mission first. -";
-					close;
-				}
-				if (checkquest(10105) == -1 || checkquest(10105) == 0) {
-					setquest 10105;
-					set slv_quest,4;
-					mes "- Look for Risingeter -";
-					mes "- in front of the -";
-					mes "- Clock Tower. -";
-					close;
-				}
-				mes "- You are already on -";
-				mes "- or have recently -";
-				mes "- completed a mission. -";
-				mes "- You can't do anymore -";
-				mes "- missions right now. -";
-				close;
-			case 2:
-				mes "- I don't want to do -";
-				mes "- a mission right now. -";
-				close;
-			}
+			callsub L_Quest,10105,4;
+			mes "- Look for Risingeter -";
+			mes "- in front of the -";
+			mes "- Clock Tower. -";
+			close;
 		case 5:
 			mes "- Localized Islands -";
 			mes "- I need someone who -";
 			mes "- can hunt monsters -";
 			mes "- for Funfi in Alberta. -";
-			next;
-			switch (select("Accept mission.:Decline mission.")) {
-			case 1:
-				if (slv_quest == 1 || slv_quest == 2 || slv_quest == 3 || slv_quest == 4 || slv_quest == 6) {
-					mes "- You are already on -";
-					mes "- another mission. -";
-					mes "- You can't do multiple -";
-					mes "- missions. Finish your -";
-					mes "- current mission first. -";
-					close;
-				}
-				if (checkquest(10106) == -1 || checkquest(10106) == 0) {
-					setquest 10106;
-					set slv_quest,5;
-					mes "- Loof for Funfi -";
-					mes "- in Alberta. -";
-					close;
-				}
-				mes "- You are already on -";
-				mes "- or have recently -";
-				mes "- completed a mission. -";
-				mes "- You can't do anymore -";
-				mes "- missions right now. -";
-				close;
-			case 2:
-				mes "- I don't want to do -";
-				mes "- a mission right now. -";
-				close;
-			}
+			callsub L_Quest,10106,5;
+			mes "- Loof for Funfi -";
+			mes "- in Alberta. -";
+			close;
 		}
 	}
 	mes "- Only members of the -";
@@ -215,6 +91,32 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 	mes "- Try to find a board -";
 	mes "- that suits your level. -";
 	close;
+L_Quest:
+	next;
+	if(select("Accept mission.:Decline mission.") == 2) {
+		mes "- I don't want to do -";
+		mes "- a mission right now. -";
+		close;
+	}
+	if (slv_quest && slv_quest != getarg(1)) {
+		mes "- You are already on -";
+		mes "- another mission. -";
+		mes "- You can't do multiple -";
+		mes "- missions. Finish your -";
+		mes "- current mission first. -";
+		close;
+	}
+	if (checkquest(getarg(0)) <= 0) {
+		setquest getarg(0);
+		set slv_quest,getarg(1);
+		return;
+	}
+	mes "- You are already on -";
+	mes "- or have recently -";
+	mes "- completed a mission. -";
+	mes "- You can't do anymore -";
+	mes "- missions right now. -";
+	close;
 }
 
 morocc,35,174,5	script	Meidi	729,{
@@ -232,75 +134,29 @@ morocc,35,174,5	script	Meidi	729,{
 		mes "Wow! How did you come back so fast?";
 		mes "What monster did you hunt?";
 		next;
-		switch (select("Requiem:Marduk:Pasana")) {
-		case 1:
-			if (checkquest(10107,HUNTING) == 2) {
-				mes "[Meidi]";
-				mes "You've hunted all 10 Requim.";
-				mes "Thank you very much.";
-				next;
-				mes "[Meidi]";
-				mes "I know it isn't much but here's a small gift.";
-				mes "I hope that it will be helpfull to you.";
-				next;
-				completequest 10107;
-				getexp 48000,0;
-				mes "[Meidi]";
-				mes "Wooohoo!";
-				mes "Good luck.";
-				close;
-			}
+		setarray .@monsters$[0],"Requiem","Marduk","Pasana";
+		set .@i, select(implode(.@monsters$,":"))-1;
+		if (checkquest(10107+.@i,HUNTING) == 2) {
 			mes "[Meidi]";
-			mes "You didn't hunt 10 Requim yet,";
-			mes "You should make sure that you hunt all of them.";
-			mes "Can you check again?";
-			close;
-		case 2:
-			if (checkquest(10108,HUNTING) == 2) {
-				mes "[Meidi]";
-				mes "You've hunted all 10 Marduk.";
-				mes "Thank you very much.";
-				next;
-				mes "[Meidi]";
-				mes "I know it isn't much but here's a small gift.";
-				mes "I hope that it will be helpfull to you.";
-				next;
-				completequest 10108;
-				getexp 48000,0;
-				mes "[Meidi]";
-				mes "Wooohoo!";
-				mes "Good luck.";
-				close;
-			}
+			mes "You've hunted all 10 "+.@monsters$[.@i]+".";
+			mes "Thank you very much.";
+			next;
 			mes "[Meidi]";
-			mes "You didn't hunt 10 Marduk yet,";
-			mes "You should make sure that you hunt all of them.";
-			mes "Can you check again?";
-			close;
-		case 3:
-			if (checkquest(10109,HUNTING) == 2) {
-				mes "[Meidi]";
-				mes "Wow, you've hunted 10 Pasana.";
-				mes "Cool.";
-				mes "Thank you very much.";
-				next;
-				mes "[Meidi]";
-				mes "I know it isn't much but here's a small gift.";
-				mes "I hope that it will be helpfull to you.";
-				next;
-				completequest 10109;
-				getexp 48000,0;
-				mes "[Meidi]";
-				mes "Wooohoo!";
-				mes "Good luck.";
-				close;
-			}
+			mes "I know it isn't much but here's a small gift.";
+			mes "I hope that it will be helpful to you.";
+			next;
+			completequest 10107+.@i;
+			getexp 48000,0;
 			mes "[Meidi]";
-			mes "You didn't hunt 10 Pasana yet,";
-			mes "You should make sure that you hunt all of them.";
-			mes "Can you check again?";
+			mes "Wooohoo!";
+			mes "Good luck.";
 			close;
 		}
+		mes "[Meidi]";
+		mes "You didn't hunt 10 "+.@monsters$[.@i]+" yet.";
+		mes "You should make sure that you hunt all of them.";
+		mes "Can you check again?";
+		close;
 	}
 	if (slv_quest == 6) {
 		mes "[Meidi]";
@@ -315,8 +171,8 @@ morocc,35,174,5	script	Meidi	729,{
 	mes "That place is very dangerous.";
 	mes "Someone should go inside an make it safer for everyone.";
 	mes "Hopefully, very soon!";
-	next;
 	if (slv_quest == 1) {
+		next;
 		mes "[Meidi]";
 		mes "Oh! Are you from the Eden Group?";
 		mes "Are you here for my mission?";
@@ -383,84 +239,26 @@ geffen,146,132,3	script	Ancellia	906,{
 		mes "What monster have you hunted?";
 		mes "Do you remember its name?";
 		next;
-		switch (select("Dark Frame:Evil Druid:Wraith:Raydric Archer")) {
-		case 1:
-			if (checkquest(10110,HUNTING) == 2) {
-				mes "[Ancellia]";
-				mes "Ah, you've hunted 10 Dark Frames.";
-				mes "That was pretty difficult!";
-				mes "Thank you very much.";
-				next;
-				completequest 10110;
-				getexp 48000,0;
-				mes "[Ancellia]";
-				mes "Perhaps you can hunt the rest as well.";
-				mes "I will wait for you here.";
-				close;
-			}
-			mes "[Ancellia]";
-			mes "Hmm... maybe you were confused.";
-			mes "You didn't hunt all 10 Dark Frames.";
-			mes "Can you check again?";
-			close;
-		case 2:
-			if (checkquest(10111,HUNTING) == 2) {
-				mes "[Ancellia]";
-				mes "Ah, you've hunted 10 Evil Druids.";
-				mes "That was pretty difficult!";
-				mes "Thank you very much.";
-				next;
-				completequest 10111;
-				getexp 48000,0;
-				mes "[Ancellia]";
-				mes "Perhaps you can hunt the rest as well.";
-				mes "I will wait for you here.";
-				close;
-			}
-			mes "[Ancellia]";
-			mes "Hmm... maybe you were confused.";
-			mes "You didn't hunt all 10 Evil Druids.";
-			mes "Can you check again?";
-			close;
-		case 3:
-			if (checkquest(10112,HUNTING) == 2) {
-				mes "[Ancellia]";
-				mes "Ah, you've hunted 10 Wraith.";
-				mes "That was pretty difficult!";
-				mes "Thank you very much.";
-				next;
-				completequest 10112;
-				getexp 48000,0;
-				mes "[Ancellia]";
-				mes "Perhaps you can hunt the rest as well.";
-				mes "I will wait for you here.";
-				close;
-			}
+		setarray .@monsters$[0],"Dark Frame","Evil Druid","Wraith","Raydric Archer";
+		set .@i, select(implode(.@monsters$,":"))-1;
+		if (checkquest(10110+.@i,HUNTING) == 2) {
 			mes "[Ancellia]";
-			mes "Hmm... maybe you were confused.";
-			mes "You didn't hunt all 10 Wraith.";
-			mes "Can you check again?";
-			close;
-		case 4:
-			if (checkquest(10113,HUNTING) == 2) {
-				mes "[Ancellia]";
-				mes "Ah, you've hunted 10 Raydric Archers.";
-				mes "That was pretty difficult!";
-				mes "Thank you very much.";
-				next;
-				completequest 10113;
-				getexp 48000,0;
-				mes "[Ancellia]";
-				mes "Perhaps you can hunt the rest as well.";
-				mes "I will wait for you here.";
-				close;
-			}
+			mes "Ah, you've hunted 10 "+.@monsters$[.@i]+"s.";
+			mes "That was pretty difficult!";
+			mes "Thank you very much.";
+			next;
+			completequest 10110+.@i;
+			getexp 48000,0;
 			mes "[Ancellia]";
-			mes "Hmm... maybe you were confused.";
-			mes "You didn't hunt all 10 Raydric Archers.";
-			mes "Can you check again?";
+			mes "Perhaps you can hunt the rest as well.";
+			mes "I will wait for you here.";
 			close;
 		}
+		mes "[Ancellia]";
+		mes "Hmm... maybe you were confused.";
+		mes "You didn't hunt all 10 "+.@monsters$[.@i]+".";
+		mes "Can you check again?";
+		close;
 	}
 	if (slv_quest == 6) {
 		mes "[Ancellia]";
@@ -478,8 +276,8 @@ geffen,146,132,3	script	Ancellia	906,{
 	mes "[Ancellia]";
 	mes "One day the came out of the castle and attacked a nearby village, it was terrible.";
 	mes "That's why I can't stop worrying.";
-	next;
 	if (slv_quest == 2) {
+		next;
 		mes "[Ancellia]";
 		mes "Oh, you got my mission";
 		mes "from the Eden Group. Great~!";
@@ -540,81 +338,25 @@ aldebaran,144,230,3	script	Jeanbai	900,{
 		mes "You amaze me!";
 		mes "So what monster did you hunt?";
 		next;
-		switch (select("Grand Peco:Sleeper:Goat:Harpy")) {
-		case 1:
-			if (checkquest(10114,HUNTING) == 2) {
-				mes "[Jeanbai]";
-				mes "You've hunted 20 Grand Pecos. Perfect!";
-				mes "Thanks a lot.";
-				next;
-				completequest 10114;
-				getexp 48000,0;
-				mes "[Jeanbai]";
-				mes "Please hunt the others as soon as possible.";
-				mes "I have faith in you!";
-				close;
-			}
-			mes "[Jeanbai]";
-			mes "What? Maybe you were confused.";
-			mes "You haven't hunted all 20 Grand Pecos.";
-			mes "Please check again.";
-			close;
-		case 2:
-			if (checkquest(10115,HUNTING) == 2) {
-				mes "[Jeanbai]";
-				mes "You've hunted 20 Sleepers!";
-				mes "Thanks a lot.";
-				next;
-				completequest 10115;
-				getexp 48000,0;
-				mes "[Jeanbai]";
-				mes "Please hunt the others as soon as possible.";
-				mes "I have faith in you!";
-				close;
-			}
+		setarray .@monsters$[0],"Grand Peco","Sleeper","Goat","Harpy";
+		set .@i, select(implode(.@monsters$,":"))-1;
+		if (checkquest(10114+.@i,HUNTING) == 2) {
 			mes "[Jeanbai]";
-			mes "What? Maybe you were confused.";
-			mes "You haven't hunted all 20 Sleepers.";
-			mes "Please check again.";
-			close;
-		case 3:
-			if (checkquest(10116,HUNTING) == 2) {
-				mes "[Jeanbai]";
-				mes "You've hunted 20 Goats. Perfect!";
-				mes "I checked the amounts and you're right.";
-				mes "Thanks a lot.";
-				next;
-				completequest 10116;
-				getexp 48000,0;
-				mes "[Jeanbai]";
-				mes "Please hunt the others as soon as possible.";
-				mes "I have faith in you!";
-				close;
-			}
-			mes "[Jeanbai]";
-			mes "What? Maybe you were confused.";
-			mes "You haven't hunted all 20 Goats.";
-			mes "Please check again.";
-			close;
-		case 4:
-			if (checkquest(10117,HUNTING) == 2) {
-				mes "[Jeanbai]";
-				mes "You've hunted 20 Harpies. Perfect!";
-				mes "Thanks a lot.";
-				next;
-				completequest 10117;
-				getexp 48000,0;
-				mes "[Jeanbai]";
-				mes "Please hunt the others as soon as possible.";
-				mes "I have faith in you!";
-				close;
-			}
+			mes "You've hunted 20 "+.@monsters$[.@i]+"s. Perfect!";
+			mes "Thanks a lot.";
+			next;
+			completequest 10114+.@i;
+			getexp 48000,0;
 			mes "[Jeanbai]";
-			mes "What? Maybe you were confused.";
-			mes "You haven't hunted all 20 Harpies.";
-			mes "Please check again.";
+			mes "Please hunt the others as soon as possible.";
+			mes "I have faith in you!";
 			close;
 		}
+		mes "[Jeanbai]";
+		mes "What? Maybe you were confused.";
+		mes "You haven't hunted all 20 "+.@monsters$[.@i]+"s.";
+		mes "Please check again.";
+		close;
 	}
 	if (slv_quest == 6) {
 		mes "[Jeanbai]";
@@ -632,8 +374,8 @@ aldebaran,144,230,3	script	Jeanbai	900,{
 	mes "[Jeanbai]";
 	mes "Monsters are increasing in numbers so travelers like me have a hard time getting around.";
 	mes "I wish I could travel around without having to worry about that.";
-	next;
 	if (slv_quest == 3) {
+		next;
 		mes "[Jeanbai]";
 		mes "Oh, did you get my mission from the Eden Group?";
 		mes "Great~! We don't have a lot of time.";
@@ -695,68 +437,27 @@ aldebaran,105,116,3	script	Risingeter	869,{
 		mes "You were the right person for this mission.";
 		mes "Which monster did you hunt?";
 		next;
-		switch (select("Clock:Punk:Rideword")) {
-		case 1:
-			if (checkquest(10118,HUNTING) == 2) {
-				mes "[Risingeter]";
-				mes "Good! You've hunted 15 Clocks.";
-				mes "Ah, now I can hear the clock sound clearly...";
-				mes "Tic!! toc!! tic!! toc!!...";
-				next;
-				completequest 10118;
-				getexp 48000,0;
-				mes "[Risingeter]";
-				mes "Thanks a lot!";
-				mes "I hope you can hunt the rest as well.";
-				mes "Go as soon as you can!";
-				close;
-			}
-			mes "[Risingeter]";
-			mes "Uh? Something is wrong.";
-			mes "15 Clocks, right?";
-			mes "You better check how many you've hunted.";
-			close;
-		case 2:
-			if (checkquest(10119,HUNTING) == 2) {
-				mes "[Risingeter]";
-				mes "Good! You've hunted 15 Punks.";
-				mes "Ah, now I can hear the clock sound clearly...";
-				mes "Tic!! toc!! tic!! toc!!...";
-				next;
-				completequest 10119;
-				getexp 48000,0;
-				mes "[Risingeter]";
-				mes "Thanks a lot!";
-				mes "I hope you can hunt the rest as well.";
-				mes "Go as soon as you can!";
-				close;
-			}
+		setarray .@monsters$[0],"Clock","Punk","Rideword";
+		set .@i, select(implode(.@monsters$,":"))-1;
+		if (checkquest(10118+.@i,HUNTING) == 2) {
 			mes "[Risingeter]";
-			mes "Uh? Something is wrong.";
-			mes "15 Punks, right?";
-			mes "You better check how many you've hunted.";
-			close;
-		case 3:
-			if (checkquest(10120,HUNTING) == 2) {
-				mes "[Risingeter]";
-				mes "Good! You've hunted 15 Ridewords.";
-				mes "Ah, now I can hear the clock sound clearly...";
-				mes "Tic!! toc!! tic!! toc!!...";
-				next;
-				completequest 10120;
-				getexp 48000,0;
-				mes "[Risingeter]";
-				mes "Thanks a lot!";
-				mes "I hope you can hunt the rest as well.";
-				mes "Go as soon as you can!";
-				close;
-			}
+			mes "Good! You've hunted 15 "+.@monsters$[.@i]+"s.";
+			mes "Ah, now I can hear the clock sound clearly...";
+			mes "Tic!! toc!! tic!! toc!!...";
+			next;
+			completequest 10118+.@i;
+			getexp 48000,0;
 			mes "[Risingeter]";
-			mes "Uh? Something is wrong.";
-			mes "15 Ridewords, right?";
-			mes "You better check how many you've hunted.";
+			mes "Thanks a lot!";
+			mes "I hope you can hunt the rest as well.";
+			mes "Go as soon as you can!";
 			close;
 		}
+		mes "[Risingeter]";
+		mes "Uh? Something is wrong.";
+		mes "15 "+.@monsters$[.@i]+"s, right?";
+		mes "You better check how many you've hunted.";
+		close;
 	}
 	if (slv_quest == 6) {
 		mes "[Risingeter]";
@@ -774,8 +475,8 @@ aldebaran,105,116,3	script	Risingeter	869,{
 	mes "That's why I like the Clock Tower so much.";
 	mes "It makes a really nice sound.";
 	mes "I like it so much!";
-	next;
 	if (slv_quest == 4) {
+		next;
 		mes "[Risingeter]";
 		mes "Uh? Have you come to help me solve my trouble.";
 		mes "You already know I like clocks right?";
@@ -827,59 +528,24 @@ alberta,215,111,5	script	Funfi	828,{
 		mes "Unbelievable~! So fast~!";
 		mes "Which monster did you hunt?";
 		next;
-		switch (select("Kikimora:Miyabi Doll:Mi Gao")) {
-		case 1:
-			if (checkquest(10121,HUNTING) == 2) {
-				mes "[Funfi]";
-				mes "Ok! You've hunted 15 Kikimora!";
-				mes "You're the best!";
-				next;
-				completequest 10121;
-				getexp 48000,0;
-				mes "[Funfi]";
-				mes "Please hunt the others as well.";
-				mes "I have faith in you!";
-				close;
-			}
+		setarray .@monsters$[0],"Kikimora","Miyabi Doll","Mi Gao";
+		set .@i, select(implode(.@monsters$,":"))-1;
+		if (checkquest(10121+.@i,HUNTING) == 2) {
 			mes "[Funfi]";
-			mes "Oh~ No no~!!";
-			mes "Listen carefully! Hunt 15 Kikimora.";
-			close;
-		case 2:
-			if (checkquest(10122,HUNTING) == 2) {
-				mes "[Funfi]";
-				mes "Ok! You've hunted 15 Miyabi Dolls!";
-				mes "You're the best!";
-				next;
-				completequest 10122;
-				getexp 48000,0;
-				mes "[Funfi]";
-				mes "Please hunt the others as well.";
-				mes "I trust you!";
-				close;
-			}
-			mes "[Funfi]";
-			mes "Oh~ No no~!!";
-			mes "Listen carefully! Hunt 15 Miyabi Dolls.";
-			close;
-		case 3:
-			if (checkquest(10123,HUNTING) == 2) {
-				mes "[Funfi]";
-				mes "Ok! You've hunted 15 Mi Gaos!";
-				mes "You're the best!";
-				next;
-				completequest 10123;
-				getexp 48000,0;
-				mes "[Funfi]";
-				mes "Please hunt the others as well.";
-				mes "I trust you!";
-				close;
-			}
+			mes "Ok! You've hunted 15 "+.@monsters$[.@i]+"!";
+			mes "You're the best!";
+			next;
+			completequest 10121+.@i;
+			getexp 48000,0;
 			mes "[Funfi]";
-			mes "Oh~ No no~!!";
-			mes "Listen carefully! Hunt 15 Mi Gaos.";
+			mes "Please hunt the others as well.";
+			mes "I have faith in you!";
 			close;
 		}
+		mes "[Funfi]";
+		mes "Oh~ No no~!!";
+		mes "Listen carefully! Hunt 15 "+.@monsters$[.@i]+".";
+		close;
 	}
 	if (slv_quest == 6) {
 		mes "[Funfi]";
@@ -894,8 +560,8 @@ alberta,215,111,5	script	Funfi	828,{
 	next;
 	mes "[Funfi]";
 	mes "There are a lot of funny things in the world... Wooo!";
-	next;
 	if (slv_quest == 5) {
+		next;
 		mes "[Funfi]";
 		mes "Anyway are you from the Eden Group?";
 		mes "You are? Cool! I've been waiting for you~!";

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

@@ -693,7 +693,7 @@ dic_in01,25,190,0	script	Mysterious Documents	844,{
 		close;
 	}
 	if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) {
-		mes "The documents in this container aren't legible. It's not use trying to read them.";
+		mes "The documents in this container aren't legible. It's no use trying to read them.";
 		close;
 	}
 	specialeffect2 EF_DISPELL;

+ 56 - 128
npc/re/quests/quests_dicastes.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Gennosuke Kouga
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -18,7 +18,8 @@
 //= 1.2a Small bug fix. [Euphy]
 //= 1.3 Temporarly disabled Izlude Fish Tail?#33 NPC because of
 //= 	the new Izlude Town Map. [Masao]
-//= 1.4	Fixed minor typos. [Joseph]
+//= 1.4 Fixed minor typos. [Joseph]
+//= 1.5 Removed "Mysterious Documents" duplicated in magic_books. [Euphy]
 //============================================================
 
 // Entrance
@@ -217,12 +218,9 @@ function	script	eldicastes_dv	{
 	close;
 }
 
-dic_dun01,284,102,5	script	Dirty Vigilante#ep13_3_	450,{
-	callfunc "eldicastes_dv",1; }
-dic_dun01,294,106,4	script	Vigilante#ep13_3_23	492,{
-	callfunc "eldicastes_dv",2; }
-dic_dun01,286,104,5	script	Vigilante#ep13_3_24	450,{
-	callfunc "eldicastes_dv",2; }
+dic_dun01,284,102,5	script	Dirty Vigilante#ep13_3_	450,{ callfunc "eldicastes_dv",1; }
+dic_dun01,294,106,4	script	Vigilante#ep13_3_23	492,{ callfunc "eldicastes_dv",2; }
+dic_dun01,286,104,5	script	Vigilante#ep13_3_24	450,{ callfunc "eldicastes_dv",2; }
 
 dic_dun01,28,212,0	script	Vigilante#ep13_3_26	45,1,1,{
 	mes "[Vigilante]";
@@ -851,126 +849,56 @@ function	script	unknown_d	{
 	close;
 }
 
-cmd_fild08,324,163,0	script	Stone Heart?#33	844,{
-	callfunc "unknown_d",12215,953; }
-moc_fild01,169,62,0	script	Cactus Needle?#33	844,{
-	callfunc "unknown_d",12214,952; }
-prt_fild02,280,328,0	script	Carrot?#33	844,{
-	callfunc "unknown_d",12213,515; }
-prt_fild02,97,209,0	script	Red Herb?#33	844,{
-	callfunc "unknown_d",12212,507; }
-prt_fild02,142,116,0	script	Feather?#33	844,{
-	callfunc "unknown_d",12211,949; }
-pay_fild07,269,164,0	script	Bear's Footskin?#33	844,{
-	callfunc "unknown_d",12210,948; }
-prt_fild03,284,190,0	script	Raccoon Leaf?#33	844,{
-	callfunc "unknown_d",12207,945; }
-prt_fild03,262,201,0	script	Yam?#33	844,{
-	callfunc "unknown_d",12206,549; }
-prt_fild03,226,170,0	script	Solid Shell?#33	844,{
-	callfunc "unknown_d",12205,943; }
-prt_fild03,180,163,0	script	Yoyo Tail?#33	844,{
-	callfunc "unknown_d",12204,942; }
-prt_fild03,64,35,0	script	Royal Jelly?#33	844,{
-	callfunc "unknown_d",12203,526; }
-prt_fild07,76,122,0	script	Grasshopper's Leg?#33	844,{
-	callfunc "unknown_d",12202,940; }
-mjolnir_09,99,100,0	script	Bee Sting?#33	844,{
-	callfunc "unknown_d",12201,939; }
-prt_fild02,102,97,0	script	Sticky Mucus?#33	844,{
-	callfunc "unknown_d",12200,938; }
-mjolnir_04,162,168,0	script	Venom Canine?#33	844,{
-	callfunc "unknown_d",12199,937; }
-mjolnir_04,191,154,0	script	Scale Shell?#33	844,{
-	callfunc "unknown_d",12198,936; }
-iz_dun01,191,92,0	script	Shell?#33	844,{
-	callfunc "unknown_d",12197,935; }
-iz_dun01,210,77,0	script	Tentacle?#33	844,{
-	callfunc "unknown_d",12196,962; }
-moc_pryd02,36,75,0	script	Decayed Nail?#33	844,{
-	callfunc "unknown_d",12194,957; }
-moc_pryd02,134,112,0	script	Rotten Bandage?#33	844,{
-	callfunc "unknown_d",12193,930; }
-iz_dun02,112,96,0	script	Immortal Heart?#33	844,{
-	callfunc "unknown_d",12192,929; }
-pay_fild07,126,49,0	script	Insect Feeler?#33	844,{
-	callfunc "unknown_d",12191,928; }
-pay_fild06,306,233,0	script	Snake Scale?#33	844,{
-	callfunc "unknown_d",12190,926; }
-moc_fild11,237,273,0	script	Bill of Birds?#33	844,{
-	callfunc "unknown_d",12189,925; }
-c_tower2,170,9,0	script	Evil Horn?#33	844,{
-	callfunc "unknown_d",12187,923; }
-pay_fild08,188,153,0	script	Mushroom Spore?#33	844,{
-	callfunc "unknown_d",12185,921; }
-moc_fild03,175,201,0	script	Wolf Claw?#33	844,{
-	callfunc "unknown_d",12184,920; }
-mjolnir_08,108,99,0	script	Animal Skin?#33	844,{
-	callfunc "unknown_d",12183,919; }
-prt_fild04,315,245,0	script	Sticky Webfoot?#33	844,{
-	callfunc "unknown_d",12182,918; }
-moc_fild12,116,122,0	script	Talon?#33	844,{
-	callfunc "unknown_d",12181,917; }
-moc_fild07,201,360,0	script	Feather of Birds?#33	844,{
-	callfunc "unknown_d",12180,916; }
-prt_fild06,127,85,0	script	Chrysalis?#33	844,{
-	callfunc "unknown_d",12179,915; }
-prt_fild06,182,290,0	script	Fluff?#33	844,{
-	callfunc "unknown_d",12178,914; }
-mjo_dun01,222,226,0	script	Tooth of Bat?#33	844,{
-	callfunc "unknown_d",12177,913; }
-iz_dun03,155,165,0	script	Gill?#33	844,{
-	callfunc "unknown_d",12176,956; }
-prt_fild05,303,169,0	script	Worm Peeling?#33	844,{
-	callfunc "unknown_d",12175,955; }
-/*izlude,132,136,0	script	Fish Tail?#33	844,{
-	callfunc "unknown_d",12174,1023; }
-*/
-pay_fild01,152,171,0	script	Resin?#33	844,{
-	callfunc "unknown_d",12171,907; }
-pay_fild02,105,113,0	script	Pointed Scale?#33	844,{
-	callfunc "unknown_d",12170,906; }
-pay_fild02,177,108,0	script	Stem?#33	844,{
-	callfunc "unknown_d",12169,905; }
-pay_fild03,144,95,0	script	Tree Root?#33	844,{
-	callfunc "unknown_d",12166,902; }
-prt_fild08,299,332,0	script	Jellopy?#33	844,{
-	callfunc "unknown_d",12173,909; }
-prt_fild09,352,241,0	script	Scorpion Tail?#33	844,{
-	callfunc "unknown_d",12168,904; }
-prt_fild09,371,255,0	script	Reptile Tongue?#33	844,{
-	callfunc "unknown_d",12167,903; }
-prt_fild03,366,237,0	script	Horn?#33	844,{
-	callfunc "unknown_d",12209,947; }
-moc_pryd02,148,184,0	script	Horrendous Mouths?#33	844,{
-	callfunc "unknown_d",12195,958; }
-gef_fild03,251,109,0	script	Orc's Fangs?#33	844,{
-	callfunc "unknown_d",12186,922; }
-gef_fild01,104,111,0	script	Spawn?#33	844,{
-	callfunc "unknown_d",12172,908; }
-gef_fild09,67,46,0	script	Snail's Shell#33	844,{
-	callfunc "unknown_d",12208,946; }
-gef_fild05,111,96,0	script	Powder of Butterfly?#33	844,{
-	callfunc "unknown_d",12188,924; }
-
-dic_in01,25,190,0	script	Mysterious Documents#00	844,{
-	if (isequipped(2782)) {
-		if (ep13_3_invite == 5) {
-			if (checkquest(12165,PLAYTIME) == 2) {
-				mes "You don't feel as nauseous anymore. It should be safe to proceed now.";
-				erasequest 12165;
-				close;
-			} else if (checkquest(12165,PLAYTIME) != -1) {
-				mes "The documents are making you feel nauseous. You should come back later after your stomach settles.";
-				close; }
-			mes "The documents in this container aren't legible. It's not use trying to read them.";
-			close; }
-		mes "- When you approach the documents,";
-		mes "an Evil Giant that looks like the archive manager tries to call Guard Galton. You should get out of here quickly. -";
-		close; }
-	mes "■▲◇ ⅲ ■●★ ※ ○⒉ⅲ";
-	close;
-}
+cmd_fild08,324,163,0	script	Stone Heart?#33	844,{ callfunc "unknown_d",12215,953; }
+moc_fild01,169,62,0	script	Cactus Needle?#33	844,{ callfunc "unknown_d",12214,952; }
+prt_fild02,280,328,0	script	Carrot?#33	844,{ callfunc "unknown_d",12213,515; }
+prt_fild02,97,209,0	script	Red Herb?#33	844,{ callfunc "unknown_d",12212,507; }
+prt_fild02,142,116,0	script	Feather?#33	844,{ callfunc "unknown_d",12211,949; }
+pay_fild07,269,164,0	script	Bear's Footskin?#33	844,{ callfunc "unknown_d",12210,948; }
+prt_fild03,284,190,0	script	Raccoon Leaf?#33	844,{ callfunc "unknown_d",12207,945; }
+prt_fild03,262,201,0	script	Yam?#33	844,{ callfunc "unknown_d",12206,549; }
+prt_fild03,226,170,0	script	Solid Shell?#33	844,{ callfunc "unknown_d",12205,943; }
+prt_fild03,180,163,0	script	Yoyo Tail?#33	844,{ callfunc "unknown_d",12204,942; }
+prt_fild03,64,35,0	script	Royal Jelly?#33	844,{ callfunc "unknown_d",12203,526; }
+prt_fild07,76,122,0	script	Grasshopper's Leg?#33	844,{ callfunc "unknown_d",12202,940; }
+mjolnir_09,99,100,0	script	Bee Sting?#33	844,{ callfunc "unknown_d",12201,939; }
+prt_fild02,102,97,0	script	Sticky Mucus?#33	844,{ callfunc "unknown_d",12200,938; }
+mjolnir_04,162,168,0	script	Venom Canine?#33	844,{ callfunc "unknown_d",12199,937; }
+mjolnir_04,191,154,0	script	Scale Shell?#33	844,{ callfunc "unknown_d",12198,936; }
+iz_dun01,191,92,0	script	Shell?#33	844,{ callfunc "unknown_d",12197,935; }
+iz_dun01,210,77,0	script	Tentacle?#33	844,{ callfunc "unknown_d",12196,962; }
+moc_pryd02,36,75,0	script	Decayed Nail?#33	844,{ callfunc "unknown_d",12194,957; }
+moc_pryd02,134,112,0	script	Rotten Bandage?#33	844,{ callfunc "unknown_d",12193,930; }
+iz_dun02,112,96,0	script	Immortal Heart?#33	844,{ callfunc "unknown_d",12192,929; }
+pay_fild07,126,49,0	script	Insect Feeler?#33	844,{ callfunc "unknown_d",12191,928; }
+pay_fild06,306,233,0	script	Snake Scale?#33	844,{ callfunc "unknown_d",12190,926; }
+moc_fild11,237,273,0	script	Bill of Birds?#33	844,{ callfunc "unknown_d",12189,925; }
+c_tower2,170,9,0	script	Evil Horn?#33	844,{ callfunc "unknown_d",12187,923; }
+pay_fild08,188,153,0	script	Mushroom Spore?#33	844,{ callfunc "unknown_d",12185,921; }
+moc_fild03,175,201,0	script	Wolf Claw?#33	844,{ callfunc "unknown_d",12184,920; }
+mjolnir_08,108,99,0	script	Animal Skin?#33	844,{ callfunc "unknown_d",12183,919; }
+prt_fild04,315,245,0	script	Sticky Webfoot?#33	844,{ callfunc "unknown_d",12182,918; }
+moc_fild12,116,122,0	script	Talon?#33	844,{ callfunc "unknown_d",12181,917; }
+moc_fild07,201,360,0	script	Feather of Birds?#33	844,{ callfunc "unknown_d",12180,916; }
+prt_fild06,127,85,0	script	Chrysalis?#33	844,{ callfunc "unknown_d",12179,915; }
+prt_fild06,182,290,0	script	Fluff?#33	844,{ callfunc "unknown_d",12178,914; }
+mjo_dun01,222,226,0	script	Tooth of Bat?#33	844,{ callfunc "unknown_d",12177,913; }
+iz_dun03,155,165,0	script	Gill?#33	844,{ callfunc "unknown_d",12176,956; }
+prt_fild05,303,169,0	script	Worm Peeling?#33	844,{ callfunc "unknown_d",12175,955; }
+//izlude,132,136,0	script	Fish Tail?#33	844,{ callfunc "unknown_d",12174,1023; }
+pay_fild01,152,171,0	script	Resin?#33	844,{ callfunc "unknown_d",12171,907; }
+pay_fild02,105,113,0	script	Pointed Scale?#33	844,{ callfunc "unknown_d",12170,906; }
+pay_fild02,177,108,0	script	Stem?#33	844,{ callfunc "unknown_d",12169,905; }
+pay_fild03,144,95,0	script	Tree Root?#33	844,{ callfunc "unknown_d",12166,902; }
+prt_fild08,299,332,0	script	Jellopy?#33	844,{ callfunc "unknown_d",12173,909; }
+prt_fild09,352,241,0	script	Scorpion Tail?#33	844,{ callfunc "unknown_d",12168,904; }
+prt_fild09,371,255,0	script	Reptile Tongue?#33	844,{ callfunc "unknown_d",12167,903; }
+prt_fild03,366,237,0	script	Horn?#33	844,{ callfunc "unknown_d",12209,947; }
+moc_pryd02,148,184,0	script	Horrendous Mouths?#33	844,{ callfunc "unknown_d",12195,958; }
+gef_fild03,251,109,0	script	Orc's Fangs?#33	844,{ callfunc "unknown_d",12186,922; }
+gef_fild01,104,111,0	script	Spawn?#33	844,{ callfunc "unknown_d",12172,908; }
+gef_fild09,67,46,0	script	Snail's Shell#33	844,{ callfunc "unknown_d",12208,946; }
+gef_fild05,111,96,0	script	Powder of Butterfly?#33	844,{ callfunc "unknown_d",12188,924; }
 
 dic_in01,137,225,5	script	Diel Guard#ep133_19	450,{
 	mes "[Diel Guard]";