office,136,31,4	script	Item Mall	4_MAL_KAFRA,{

	mes "[Item Mall]";
	mes "All items here can avail through donation and patience.";
	mes "You currently have:";
	mes "Credit Points: ^FF0000"+F_InsertComma(callfunc("F_CheckCredit"))+"^000000";
	switch(select("^FF0000Shop Now^000000","Premium Services")) {
	next;
	case 1:
		callfunc "ishop";
		close(); 
	case 2:
	
		mes "[Item Mall]";
		mes "So, Which ^FF0000Premium Services^000000 you would like to look at it";
			switch(select(
			 "- Change Guild Leader:"+
			 ((!#mobile)?"- Change Name:":":")+
			 //"- Change Gender:"+
	 		 "- ^777777Close^000000"
			)) {
			next;	
			case 1:	// Change GM 24USD = 20000
				if (getcharid(0) != getguildmasterid(getcharid(2))) {
					mes "[Item Mall]";
					mes "You are not a guild master.";
					close();
				}
				set .@gldid,getcharid(2);
				mes "[Item Mall]";
				query_sql("SELECT `name` , `master` , `guild_lv` FROM `guild` WHERE `guild_id` = '"+.@gldid+"'",.@gname$,.@char$,.@glvl);
				mes "^FF0000Change Guild Master^000000";
				//mes "This service is FREE until 6/26";
				mes "This service will cost you";
				mes "^FF0000 20,000^000000 Credit Points";

				mes "Information:";
				mes "Guild Name: ^ff0000"+.@gname$+"^000000";
				mes "Guild Level: ^ff0000"+.@glvl+"^000000";
				mes "Guild Master: ^ff0000"+.@char$+"^000000";
				mes "Do you wish to continue changing guild master?";
				next;
				if( select("No", "Yes") == 1 )
					close();
				
				if(callfunc("F_CheckCredit") < 20000 ) {
					mes "[Item Mall]";
					mes "Im sorry, but you don't have enough ^FF0000Credit Points^000000 to process this request.";
					close();
				}
				
				mes "[Item Mall]";
				mes "^FF0000NOTE^000000:";
				mes "^FF0000-^000000 Double check the spelling.";
				mes "^FF0000-^000000 The character name you";
				mes "  will be providing should";
				mes "  be the NEW guild leader.";
				mes "^FF0000-^000000 New Guild leader should be online.";
				mes "Enter the ^FF0000new^000000 guild leader's name.";
				input .@cgl$;
				next;
				mes .npc$;
				mes "Please ^FF0000re-enter^000000 the name again for confirmation.";
				input .@cgl2$;
				next;

				if (.@cgl$ != .@cgl2$) {
					mes .npc$;
					mes "The names you entered doesn't match.";
					close();
				}
				.@check = query_sql("SELECT `account_id` FROM `char` WHERE `name`='"+escape_sql(.@cgl$)+"'",.@acid);
				if (!.@check){
					mes .npc$;
					mes "Character [ ^FF0000"+.@cgl$+"^000000 ] doesn't exist!";
					close();
				}
				if (.@cgl$ == .@char$) {
					mes .npc$;
					mes "Character [ ^FF0000"+.@cgl$+"^000000 ] is already the leader of [ ^FF0000"+.@gname$+"^000000 ] Guild.";
					close();
				}
				if (!isloggedin(getcharid(3,.@cgl$), getcharid(0,.@cgl$))){
					mes .npc$;
					mes "Character [ ^FF0000"+.@cgl$+"^000000 ] must be online to proceed!";
					close();
				}
				if (getcharid(2,.@cgl$) != .@gldid){
					mes .npc$;
					mes "Character [ ^FF0000"+.@cgl$+"^000000 ] is not a member of [ ^FF0000"+.@gname$+"^000000 ] Guild.";
					close();
				}

				mes .npc$;
				mes "Please confirm the following details before we proceed,";
				mes "Current Leader: ^FF0000"+strcharinfo(PC_NAME)+"^000000";
				mes "New Leader: ^FF0000"+.@cgl$+"^000000";
				mes "Would you like to proceed?";
				next;
				if (select("Close","^FF0000Confirmed^000000!") != 1) {
					close2;
					if (.gcdone == .@gldid){
						if ( .delay > gettimetick(2) ){
							message strcharinfo(0), "Transfer failed!";
							mes .npc$;
							mes "You must wait [^FF0000"+(.delay - gettimetick(2))+"^000000] seconds,";
							mes .@char$+"'s guild has been currently";
							mes "modified and changed their";
							mes "guild leader authority.";
							close();
						}
					}
					
					callfunc("F_UpdateCredit",-20000);
					logmes "CREDIT: -20000 Change Guild Master";
					
					message strcharinfo(0), "You have succesfully transferred the guild!";
					announce strcharinfo(0)+" : The [ "+.@gname$+" ] Guild previously owned by "+.@char$+" succesfully transferred its ownership to "+.@cgl$+"!",bc_all,0xe57c00;
					guildchangegm(.@gldid,.@cgl$);
					.gcdone = .@gldid;
					if (.d)
					.delay = gettimetick(2) + .d;
					sleep2 1000;
					if (isloggedin(getcharid(3,.@cgl$), getcharid(0,.@cgl$))){
						atcommand "@kick "+.@cgl$;
					}
					if (isloggedin(getcharid(3,.@char$), getcharid(0,.@char$))){
						atcommand "@kick "+.@char$;
					}
					end;
				}

				close();

			case 2:
				mes "[Item Mall]";
				mes "^FF0000Change Name^000000";
				mes "This service will cost you";
				mes "^FF0000 10,000^000000 Credit Points";
				mes "Do you wish to continue?";
				next;
				if( select("No", "Yes") == 1 )
					close();

				if(callfunc("F_CheckCredit") < 10000 ) {
					mes "[Item Mall]";
					mes "Im sorry, but you don't have enough ^FF0000Credit Points^000000 to process this request.";
					close();
				}

				callfunc("F_UpdateCredit",-10000);
				logmes "CREDIT: -10000 Change Name";

				CharRename += 1;
				mes "[Item Mall]";
				mes "Done";
				mes "You will need to character select and click ^FF0000Rename^000000 button.";
				mes "Thank you for using this service.";
				close();
			/*
			case 3:
				mes "[Item Mall]";
				mes "^FF0000Change Gender^000000";
				mes "This service will cost you";
				mes "^FF0000 10,000^000000 Credit Points";
				mes "Do you wish to continue?";
				next;
				if( select("No", "Yes") == 1 )
					close();

				if(callfunc("F_CheckCredit") < 10000 ) {
					mes "[Item Mall]";
					mes "Im sorry, but you don't have enough ^FF0000Credit Points^000000 to process this request.";
					close();
				}

				callfunc("F_UpdateCredit",-10000);
				logmes "CREDIT: -10000 Change Gender";

			
				changesex();
				mes "[Item Mall]";
				mes "Done";
				mes "Please relog...";
				mes "Thank you for using this service.";
				close();
			*/
			case 4:
				close();

			default:

				mes "Invalid Menu Selection for Menu. Inform this Message to ^0000FFGame Staffs^000000 immediately !";
				close();	
		}
	default:
		close();
	}
}

// Script Core
//============================================================
-	script	i_shop	FAKE_NPC,{
function Add; function Chk; function Slot; function A_An;
OnInit:
	
	freeloop(1);

// -----------------------------------------------------------
//  Basic shop settings.
// -----------------------------------------------------------

	set .Announce,0;	// Announce quest completion? (1: yes / 0: no)
	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
	set .ShowID,1;  	// Show item IDs? (1: yes / 0: no)
	set .ShowZeny,1;	// Show Zeny cost, if any? (1: yes / 0: no)
	set .MaxStack,1;	// Max number of quest items purchased at one time.

// -----------------------------------------------------------
//  Points variable -- optional quest requirement.
//	setarray .points$[0],"<variable name>","<display name>";
// -----------------------------------------------------------

	setarray .points$[0],"#CASHPOINTS","Credit Points";

// -----------------------------------------------------------
//  Shop IDs -- to add shops, copy dummy data at bottom of file.
//	setarray .iShops$[1],"<Shop 1>","<Shop 2>"{,...};
// -----------------------------------------------------------

	setarray .iShops$[1],"New","Usable","Garmet Costume","Upper Costume","Mid Costume","Lower Costume","Mid-Lower Costume","Rental Costumes","Pet Armors","Pet Eggs","Headgears";

// -----------------------------------------------------------
//  Quest items -- do NOT use a reward item more than once!
//	Add(<shop ID>,<reward ID>,<reward amount>,
//	    <Zeny cost>,<point cost>,
//	    <required item ID>,<required item amount>{,...});
// -----------------------------------------------------------

// Whats New
//Add(1,19742,1,0,4000);

/* Lighthalzen Package
//Add(1,30093,1,0,70000);
*/

/* Noghaltz Package
Add(1,30161,1,0,30000);
*/

/* Hugel Package 
Add(1,30172,1,0,40000);
*/

/* Rachel Bundle 
Add(1,30175,1,0,50000);
Add(1,30176,1,0,50000);
*/

/* November Package
Add(1,30254,1,0,20000);
Add(1,30255,1,0,20000);
*/
/* December Package
Add(1,30284,1,0,20000);
*/

// Usable
Add(2,30247,1,0,15000);
Add(2,12215,1,0,40);
Add(2,12216,1,0,40);
Add(2,14588,1,0,150);
Add(2,14589,1,0,150);
Add(2,12218,1,0,40);
Add(2,12913,1,0,360);
Add(2,12914,1,0,360);
Add(2,13912,1,0,1350);
Add(2,13913,1,0,1350);
Add(2,12916,1,0,360);
Add(2,14542,1,0,100);
Add(2,14544,1,0,100);
Add(2,13749,1,0,900);
Add(2,14091,1,0,900);
Add(2,14537,1,0,350);
Add(2,13720,1,0,3150);
Add(2,14535,1,0,180);
Add(2,13714,1,0,1620);
Add(2,12202,1,0,75);
Add(2,12204,1,0,75);
Add(2,12205,1,0,75);
Add(2,12206,1,0,75);
Add(2,12203,1,0,75);
Add(2,12207,1,0,75);
Add(2,14159,1,0,675);
Add(2,14160,1,0,675);
Add(2,14161,1,0,675);
Add(2,14162,1,0,675);
Add(2,14163,1,0,675);
Add(2,14164,1,0,675);
Add(2,12212,1,0,10);
Add(2,12910,1,0,90);
Add(2,13571,1,0,800);
Add(2,14536,1,0,40);
Add(2,13717,1,0,180);
Add(2,13710,1,0,20000);
Add(2,6046,1,0,2000);
Add(2,6047,1,0,2000);
Add(2,12622,1,0,12000);


// Wings
Add(3,20737,1,0,26000);
Add(3,20746,1,0,26000);
Add(3,20761,1,0,26000);
Add(3,20762,1,0,26000);
Add(3,20763,1,0,26000);
Add(3,20764,1,0,26000);
Add(3,20500,1,0,26000);
Add(3,20502,1,0,26000);
Add(3,20504,1,0,26000);
Add(3,20507,1,0,26000);
Add(3,20509,1,0,26000);

//Upper
Add(4,30279,1,0,12000);
Add(4,30280,1,0,12000);
Add(4,30276,1,0,12000);
Add(4,30266,1,0,12000);
Add(4,30264,1,0,12000);
Add(4,30261,1,0,12000);
Add(4,30236,1,0,12000);
Add(4,30239,1,0,12000);
Add(4,30240,1,0,12000);
Add(4,30231,1,0,12000);
Add(4,30186,1,0,12000);
Add(4,30189,1,0,12000);
Add(4,30190,1,0,12000);
Add(4,30191,1,0,12000);
Add(4,30194,1,0,12000);
Add(4,30195,1,0,12000);
Add(4,30197,1,0,9000);
Add(4,30179,1,0,4000);
Add(4,30178,1,0,4000);
Add(4,19518,1,0,12000);
Add(4,20152,1,0,12000);
Add(4,20155,1,0,12000);
Add(4,19930,1,0,12000);
Add(4,20777,1,0,12000);
Add(4,20778,1,0,12000);
Add(4,20780,1,0,15000);
Add(4,20781,1,0,12000);
Add(4,19589,1,0,12000);
Add(4,19544,1,0,12000);
Add(4,19937,1,0,2000);
Add(4,19676,1,0,12000);
Add(4,20499,1,0,12000);
Add(4,31042,1,0,12000);
Add(4,19668,1,0,2000);
Add(4,20432,1,0,2000);
Add(4,18893,1,0,12000);
Add(4,20011,1,0,12000);
Add(4,18987,1,0,2000);
Add(4,20217,1,0,2000);
Add(4,20401,1,0,15000);
Add(4,20247,1,0,12000);
Add(4,19696,1,0,12000);
Add(4,20449,1,0,15000);
Add(4,20219,1,0,15000);
Add(4,5210,1,0,15000);
Add(4,20099,1,0,15000);
Add(4,5423,1,0,12000);
Add(4,5430,1,0,12000);
Add(4,20404,1,0,12000);
Add(4,19739,1,0,12000);
Add(4,20317,1,0,12000);
Add(4,20316,1,0,12000);
Add(4,18740,1,0,12000);
Add(4,20130,1,0,12000);
Add(4,20601,1,0,9000);
Add(4,19976,1,0,2000);
Add(4,19521,1,0,2000);
Add(4,19568,1,0,2000);
Add(4,19876,1,0,2000);
Add(4,19800,1,0,2000);
Add(4,19565,1,0,2000);
Add(4,19824,1,0,2000);
Add(4,20199,1,0,2000);
Add(4,20121,1,0,2000);
Add(4,20204,1,0,2000);
Add(4,20227,1,0,2000);
Add(4,19968,1,0,2000);
Add(4,19836,1,0,2000);
Add(4,19729,1,0,2000);
Add(4,19707,1,0,2000);
Add(4,19706,1,0,2000);
Add(4,20284,1,0,2000);
Add(4,19677,1,0,2000);
Add(4,19914,1,0,2000);

// Mid
Add(5,30281,1,0,9000);
Add(5,30185,1,0,15000);
Add(5,30278,1,0,9000);
Add(5,30277,1,0,12000);
Add(5,30267,1,0,12000);
Add(5,30265,1,0,9000);
Add(5,30263,1,0,12000);
Add(5,30233,1,0,4000);
Add(5,30235,1,0,4000);
Add(5,30238,1,0,4000);
Add(5,30242,1,0,4000);
Add(5,31120,1,0,4000);
Add(5,30188,1,0,9000);
Add(5,30192,1,0,12000);
Add(5,30196,1,0,9000);
Add(5,30224,1,0,9000);
Add(5,30226,1,0,12000);
Add(5,30227,1,0,9000);
Add(5,20270,1,0,4000);
Add(5,20221,1,0,4000);
Add(5,20010,1,0,4000);
Add(5,20131,1,0,4000);
Add(5,20459,1,0,2000);
Add(5,19148,1,0,4000);
Add(5,5421,1,0,4000);
Add(5,5985,1,0,2000);
Add(5,20314,1,0,2000);
Add(5,20430,1,0,12000);
Add(5,31088,1,0,2000);
Add(5,20147,1,0,9000);
Add(5,19158,1,0,9000);
Add(5,20318,1,0,9000);
Add(5,30022,1,0,2000);
Add(5,30013,1,0,2000);
Add(5,30014,1,0,2000);
Add(5,30015,1,0,2000);

// Lower Costumes
Add(6,30282,1,0,12000);
Add(6,30275,1,0,19000);
Add(6,30268,1,0,4000);
Add(6,30269,1,0,4000);
Add(6,30270,1,0,4000);
Add(6,30271,1,0,4000);
Add(6,30272,1,0,4000);
Add(6,30273,1,0,4000);
Add(6,30262,1,0,4000);
Add(6,30234,1,0,9000);
Add(6,30232,1,0,9000);
Add(6,20798,1,0,12000);
Add(6,20201,1,0,12000);
Add(6,31055,1,0,4000);
Add(6,30187,1,0,9000);
Add(6,30193,1,0,4000);
Add(6,30198,1,0,4000);
Add(6,30199,1,0,4000);
Add(6,30200,1,0,4000);
Add(6,30201,1,0,4000);
Add(6,30202,1,0,4000);
Add(6,30203,1,0,4000);
Add(6,30204,1,0,4000);
Add(6,30205,1,0,4000);
Add(6,30206,1,0,4000);
Add(6,30207,1,0,4000);
Add(6,30208,1,0,4000);
Add(6,30209,1,0,4000);
Add(6,30210,1,0,4000);
Add(6,30211,1,0,4000);
Add(6,30212,1,0,4000);
Add(6,30213,1,0,4000);
Add(6,30214,1,0,4000);
Add(6,30215,1,0,4000);
Add(6,30216,1,0,4000);
Add(6,30217,1,0,4000);
Add(6,30218,1,0,4000);
Add(6,30219,1,0,4000);
Add(6,30220,1,0,4000);
Add(6,30221,1,0,4000);
Add(6,30222,1,0,4000);
Add(6,30223,1,0,4000);
Add(6,30225,1,0,4000);
Add(6,30173,1,0,4000);
Add(6,20779,1,0,9000);
Add(6,20289,1,0,2000);
Add(6,20290,1,0,2000);
Add(6,20291,1,0,2000);
Add(6,20292,1,0,2000);
Add(6,20752,1,0,2000);
Add(6,20753,1,0,2000);
Add(6,20754,1,0,2000);
Add(6,20755,1,0,2000);
Add(6,20756,1,0,2000);
Add(6,20757,1,0,2000);
Add(6,5967,1,0,4000);
Add(6,20448,1,0,4000);
Add(6,20440,1,0,4000);
Add(6,20407,1,0,4000);
Add(6,20405,1,0,9000);
Add(6,20315,1,0,9000);
Add(6,20034,1,0,4000);
Add(6,20202,1,0,4000);
Add(6,20132,1,0,4000);
Add(6,5377,1,0,4000);
Add(6,30021,1,0,4000);
Add(6,30016,1,0,2000);
Add(6,30017,1,0,2000);
Add(6,30018,1,0,2000);
Add(6,30019,1,0,2000);

// Mid Lowe
Add(7,18868,1,0,2000);
Add(7,20195,1,0,4000);
Add(7,5420,1,0,15000);
Add(7,19567,1,0,2000);

// Rental
Add(8,20626,1,0,500);
Add(8,20627,1,0,500);
Add(8,20628,1,0,500);
Add(8,20629,1,0,500);
Add(8,20630,1,0,500);
Add(8,20631,1,0,500);
Add(8,20632,1,0,500);
Add(8,20633,1,0,500);
Add(8,20634,1,0,500);
Add(8,20635,1,0,500);
Add(8,20636,1,0,500);
Add(8,20637,1,0,500);
Add(8,20638,1,0,500);
Add(8,20639,1,0,500);
Add(8,20640,1,0,500);
Add(8,20641,1,0,500);
Add(8,20642,1,0,500);
Add(8,20643,1,0,500);
Add(8,20644,1,0,500);
Add(8,20645,1,0,500);
Add(8,20646,1,0,500);
Add(8,20647,1,0,500);
Add(8,20648,1,0,500);
Add(8,20649,1,0,500);

// Pet EQ
Add(9,10022,1,0,2000);
Add(9,10023,1,0,2000);
Add(9,10024,1,0,2000);
Add(9,10025,1,0,2000);
Add(9,10026,1,0,2000);
Add(9,10027,1,0,2000);
Add(9,10028,1,0,2000);
Add(9,10029,1,0,2000);
Add(9,10030,1,0,2000);
Add(9,10031,1,0,2000);
Add(9,10032,1,0,2000);
Add(9,10033,1,0,2000);
Add(9,10034,1,0,2000);
Add(9,10035,1,0,2000);
Add(9,10036,1,0,2000);
Add(9,10037,1,0,2000);
Add(9,10038,1,0,2000);


// Egg
Add(10,30163,1,0,12000);
Add(10,30164,1,0,12000);
Add(10,30165,1,0,12000);
Add(10,30166,1,0,12000);
Add(10,30167,1,0,12000);
Add(10,30168,1,0,12000);
Add(10,30169,1,0,12000);
Add(10,30170,1,0,12000);
Add(10,30068,1,0,7000);
Add(10,30070,1,0,7000);
Add(10,30071,1,0,7000);
Add(10,30066,1,0,7000);
Add(10,30079,1,0,7000);
Add(10,30064,1,0,7000);
Add(10,30077,1,0,7000);
Add(10,30082,1,0,7000);
Add(10,30084,1,0,7000);
Add(10,30072,1,0,7000);
Add(10,30073,1,0,7000);
Add(10,30074,1,0,7000);
Add(10,30076,1,0,7000);
Add(10,30075,1,0,7000);
Add(10,30083,1,0,7000);
Add(10,30023,1,0,7000);

// Regular Headgears
Add(11,5187,1,0,19000);
Add(11,18600,1,0,19000);
Add(11,5574,1,0,19000);

// -----------------------------------------------------------

	freeloop(0);
	set .menu$,"";
	for(set .@i,1; .@i<=getarraysize(.iShops$); set .@i,.@i+1) {
		set .menu$, .menu$+.iShops$[.@i]+":";
		npcshopdelitem "ishop"+.@i,909;
	}
	end;

OnMenu:
	set .@size, getarraysize(@i);
	if (!.@size) set .@i, select(.menu$);
	else if (.@size == 1) set .@i, @i[0];
	else {
		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
			set .@menu$, .@menu$+.iShops$[@i[.@j]]+":";
		set .@i, @i[select(.@menu$)-1];
	}
	deletearray @i[0],getarraysize(@i);
	if (.iShops$[.@i] == "") {
		message strcharinfo(PC_NAME),"An error has occurred.";
		end;
	}
	dispbottom "Select one item at a time.";
	callshop "ishop"+.@i,1;
	npcshopattach "ishop"+.@i;
	end;

OnBuyItem:
	disable_items();
	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
	set .@q[2],.@q[1]*.@q[3];
	if (!.@q[2] || .@q[2] > 30000) {
		message strcharinfo(PC_NAME),"You can't purchase that many "+getitemname(.@q[0])+".";
		end;
	}
	mes "[Item Mall]";
	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
	mes "Requirements:";
	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
	//if (.@q[5]) mes " > "+Chk(getd(.points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.points$[1]+" ("+getd(.points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
	if (.@q[5]) mes " > "+Chk(callfunc("F_CheckCredit"),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.points$[1]+" ("+callfunc("F_CheckCredit")+"/"+(.@q[5]*.@q[1])+")^000000";
	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
	next;
	setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOC), getiteminfo(.@q[0], ITEMINFO_VIEWSPRITE);
	if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT)))
		set .@preview,1;
	addtimer 1000, strnpcinfo(NPC_NAME)+"::OnEnd";

	while(1) {
		switch(select(" ~ Purchase ^0055FF"+ getitemname(.@q[0]) +"^000000", ((.@preview && !@qe[7])?" ~ Preview...": ""), " ~ ^777777Cancel^000000")) {
		case 1:
			if (@qe[0]) {
				mes "[Item Mall]";
				mes "You're Credit Points is not suffecient to purchase the item.";
				close();
			}
			if (!checkweight(.@q[0],.@q[2])) {
				mes "[Item Mall]";
				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
				close();
			}
			if (.@q[4]) Zeny -= (.@q[4]*.@q[1]);
			if (.@q[5]) callfunc "F_UpdateCredit",-(.@q[5]*.@q[1]);
			//if (.@q[5]) setd .points$[0], getd(.points$[0])-(.@q[5]*.@q[1]);
			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
			getitem .@q[0],.@q[2];
			if (.Announce) chanmsg("system",""+strcharinfo(PC_NAME)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!");
			//specialeffect2 EF_FLOWERLEAF;
			close();
		case 2:
			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
			break;
		case 3:
			close();
		}
	}

OnEnd:
	if (@qe[7]) {
		changelook LOOK_HEAD_BOTTOM, @qe[3];
		changelook LOOK_HEAD_TOP, @qe[4];
		changelook LOOK_HEAD_MID, @qe[5];
		changelook LOOK_ROBE, @qe[6];
	}
	deletearray @qe[0],8;
	end;

function Add {
	if (getitemname(getarg(1)) == "null") {
		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
		return;
	}
	setarray .@j[0],getarg(2),getarg(3),getarg(4);
	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
		if (getitemname(getarg(.@i)) == "null") {
			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
			return;
		} else
			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
	}
	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
	npcshopadditem "ishop"+getarg(0),getarg(1),((.ShowZeny)?getarg(4):0);
	return;
}

function Chk {
	if (getarg(0) < getarg(1)) {
		set @qe[0],1;
		return "^FF0000";
	} else
		return "^00FF00";
}

function Slot {
	set .@s$,getitemname(getarg(0));
	switch(.ShowSlot) {
		case 1: if (!getitemslots(getarg(0))) return .@s$;
		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
		default: return .@s$;
	}
}

function A_An {
	setarray .@A$[0],"a","e","i","o","u";
	set .@B$, "_"+getarg(0);
	for(set .@i,0; .@i<5; set .@i,.@i+1)
		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
	return "a "+getarg(0);
}
}

function	script	ishop	{

	deletearray @i[0],getarraysize(@i);
	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
		set @i[.@i],getarg(.@i);
	doevent "i_shop::OnMenu";
	end;
	
}


// Dummy shop data -- copy as needed.
//============================================================
-	shop	ishop1	FAKE_NPC,909:-1
-	shop	ishop2	FAKE_NPC,909:-1
-	shop	ishop3	FAKE_NPC,909:-1
-	shop	ishop4	FAKE_NPC,909:-1
-	shop	ishop5	FAKE_NPC,909:-1
-	shop	ishop6	FAKE_NPC,909:-1
-	shop	ishop7	FAKE_NPC,909:-1
-	shop	ishop8	FAKE_NPC,909:-1
-	shop	ishop9	FAKE_NPC,909:-1
-	shop	ishop10	FAKE_NPC,909:-1
-	shop	ishop11	FAKE_NPC,909:-1