//===== rAthena Script =======================================
//= Card Seller A-Z
//===== Description: =========================================
//= Sells all cards dropped by mobs, grouped alphabetically.
//= MVP cards are excluded from the list.
//=
//= NOTE: Requires SQL item and mob databases.
//===== Changelogs: ==========================================
//= 1.0 First version [AnnieRuru]
//= 1.1 Minor edits [Euphy]
//= 1.2 Update for monster mode and enchants [Lemongrass]
//============================================================

prontera,155,177,5	script	Card Seller	100,{
	.@menu$ = getvariableofnpc( .alphabet_menu$, "card_seller_creation" );
	if (.@menu$ == "") {
		mes "[Card Seller]";
		mes "I am sorry, it seems like something went wrong.";
		mes "I cannot find any cards in our database at the moment.";
		mes "Please contact a game master.";
		close;
	}
	mes "[Card Seller]";
	mes "Welcome!";
	mes "I can sell you any normal monster card in the game. Would you like to have a look?";
	next;
	.@s = select(.@menu$) -1;
	close2;
	callshop "card_mob#"+ getvariableofnpc( .alphabet$[.@s], "card_seller_creation" ), 1;
	end;
}

-	script	card_seller_creation	-1,{
	end;
OnInit:
	if (checkre(0)) {
		.@mob_db$  = "mob_db_re";
		.@item_db$ = "item_db_re";
	} else {
		.@mob_db$  = "mob_db";
		.@item_db$ = "item_db";
	}
	freeloop 1;	
	.@total = query_sql( "SELECT DISTINCT LEFT( `name_english`, 1 ) AS alphabets FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY alphabets;", .@alphabet$ );
	for ( .@i = 0; .@i < .@total; .@i++ ) {
		.@nb = query_sql( "SELECT `"+ .@item_db$ +"`.`id` FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND LEFT( `name_english`, 1 ) = '"+ .@alphabet$[.@i] +"' AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY `name_english` LIMIT 128;", .@id );
		if (.@nb > 0) {
			.alphabet$[.@size_alphabet++] = .@alphabet$[.@i];
			.alphabet_menu$ = .alphabet_menu$ + .@alphabet$[.@i] +" Cards:";
			npcshopdelitem "card_mob#"+ .@alphabet$[.@i], 501;
			for ( .@j = 0; .@j < .@nb; .@j++ ) {
				if (callfunc( "F_IsCharm", .@id[.@j] ) == true)// Skip enchants in case someone added them as card drop
					continue;
				npcshopadditem "card_mob#"+ .@alphabet$[.@i], .@id[.@j], 1000000;
			}
		}
	}
	freeloop 0;
	end;
}
-	shop	card_mob#A	-1,501:1000
-	shop	card_mob#B	-1,501:1000
-	shop	card_mob#C	-1,501:1000
-	shop	card_mob#D	-1,501:1000
-	shop	card_mob#E	-1,501:1000
-	shop	card_mob#F	-1,501:1000
-	shop	card_mob#G	-1,501:1000
-	shop	card_mob#H	-1,501:1000
-	shop	card_mob#I	-1,501:1000
-	shop	card_mob#J	-1,501:1000
-	shop	card_mob#K	-1,501:1000
-	shop	card_mob#L	-1,501:1000
-	shop	card_mob#M	-1,501:1000
-	shop	card_mob#N	-1,501:1000
-	shop	card_mob#O	-1,501:1000
-	shop	card_mob#P	-1,501:1000
-	shop	card_mob#Q	-1,501:1000
-	shop	card_mob#R	-1,501:1000
-	shop	card_mob#S	-1,501:1000
-	shop	card_mob#T	-1,501:1000
-	shop	card_mob#U	-1,501:1000
-	shop	card_mob#V	-1,501:1000
-	shop	card_mob#W	-1,501:1000
-	shop	card_mob#X	-1,501:1000
-	shop	card_mob#Y	-1,501:1000
-	shop	card_mob#Z	-1,501:1000
