//===== rAthena Script ======================================= 
//= 3rd Item Seller
//===== By: ================================================== 
//= Masao
//= Mercurial
//===== Current Version: ===================================== 
//= 1.1
//===== Compatible With: ===================================== 
//= rAthena SVN
//===== Description: ========================================= 
//= [Aegis Conversion]
//= Sells some 3rd Job related Items.
//===== Additional Comments: ================================= 
//= v1.1 Optimized Poison Herb Salesman NPC
//= v1.0 First Version.
//============================================================ 


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;
		}
	}
	
	mes .npcName$;
	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;
	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$;
		mes "How many do you want? You can";
		mes "only buy a maximum of "+.maxHerbs+" ea";
		mes "and if you want to cancel, enter '0'.";
		input .herbsCount;
		if(.herbsCount<=0) // check if player canceled herb purchase
		{
			next;
			mes .npcName$;
			mes "You've cancelled the trade.";
			close;
		}
		else if(.herbsCount>.maxHerbs) // checks if herbs count exceeds maxHerbs limit
		{
			next;
			mes .npcName$;
			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. -";
			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;
			}
		}
	}
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;
}


job3_rune01,90,62,3	script	Rune Salesman::runesale	853,{

	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. -";
		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]";
		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]";
		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.";
		close;
	}
}

job3_guil01,91,93,3	script	Rare Herb Collector	49,{

	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. -";
		close;
	}

	if (Class == 4059 || Class == 4065)
	{
		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:
			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;
			}
			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;
				close;
			}
			mes "[Rare Poison Herb Collector]";
			mes "Hey, try again after you've prepared all the requirements for the exchange.";
			close;
		}
	}
	mes "[Rare Poison Herb Collector]";
	mes "I wander around the world and collect rare poison herbs. But I don't feel like selling my herbs to a person like you... ha ha ha...";
	close;
}

gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{

	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. -";
		close;
	}

    mes "[Point Salesman]";
	mes "Hello. I'm selling a catalyst that are 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.";
		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.";
		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.";
		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]";
		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;
	}
}


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