//==================================
// [ڤ] The PlutoEA Project []
// http://opensvn.csie.org/PlutoEA
// ---------------------------------
// - ű - 
//===================================
// - 6.1 fix-5c
//===================================

function	script	F_Kafra	{
	callfunc "F_ClearGarbage"; //ڱ

	//ӭ־
	switch(getarg(0)){
		//Ԥ
		default:
		case 0:
			mes "["+ strnpcinfo(0) +"]";
			mes "ӭ. ˾";
			mes "ʱΪǷ.";
			mes "Ҫʲô?";
			break;

		//ܽķ
		case 1:
			mes "["+ strnpcinfo(0) +"]";
			mes "ӭ... ... ";
			mes "˾...";
			mes "... ... Ϊ..."; 
			break;

		//Ǳ
		case 2:
			set @GID,getcharid(2);
			mes "["+ strnpcinfo(0) +"]";
	 		mes "ӭ '^ff0000" + GetGuildName(@GID) + "^000000'";
			mes "Ա,";
			mes "";
			mes "ԶڸλΪ";
			break;

		//̩
		case 3:
			mes "["+ strnpcinfo(0) +"]";
			mes "ӭ٣˾ʱΪǷ";
			mes "Ҫʲô?";
			break;

		//޿ˡŵ
		case 4:
			mes "["+ strnpcinfo(0) +"]";
			mes "ӭ٣˾ʱΪǷ";
			mes "Ҫʲô?";
			break;

		//ʾ
		case 5:
			break;

		//ϣ
		case 6:
			mes "["+ strnpcinfo(0) +"]";
			mes "ӭ٣˾";
			mes "ʱΪǷģ";
			mes "Ҫʲô?";
			break;
	}
	next;

	M_Menu:
		cleararray @K_Menu0$[0],"",7;
	switch(getarg(1)){
		// Ͳֿ 
		case 1:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ܽ.";
			break;

		// ֻвֿ
		case 2:
			setarray @K_Menu0$[0],"ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ܽ.";
			break;

		// ޴ͷ
		case 3: 
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","Ƴ.","ѶϢȷ."," ܽ.";
			break;

		// Case 4 㷢ȷµĽֹѶϢ

		// ûд
		case 5:
			setarray @K_Menu0$[0],"ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","Ƴ.","ѶϢȷ."," ܽ.";
			break;

		// ֻвֿ⼰ȷѶ
		case 6:
			setarray @K_Menu0$[0],"ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ѶϢȷ."," ܽ.";
			break;

		// ֻд桢ֿ⡢Ƴ
		case 7:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","Ƴ.","ܽ.";
			break;

		// ٳ
		case 8:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ѶϢȷ.","ܽ.";
			break;

		// ¡ (ѡ)
		case 9:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ.","Ƴ.","ѶϢȷ.","ܽ.";
			break;

		//  (ѡ)
		case 10:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ.","ѶϢ˵.","ܽ.";
			break;

		// ⵺쿨 (ѡ)
		case 11:
			setarray @K_Menu0$[0],"ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":""," ѶϢȷ.","ܽ.";

		// ϣ (ѡ)
		case 12:
			setarray @K_Menu0$[0],"","ֿ",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ","Ƴ","ȷ鱨","";
			break;

		// ޿˿ (ѡ)
		case 13:
			setarray @K_Menu0$[0],"ʹô","ʹòֿ",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ.","Ƴ","ȷѶϢ","";
			break;

		// ؿ (ѡ)
		case 14:
			setarray @K_Menu0$[0],"ʹô","ʹòֿ",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ʹƳ","ȷѶϢ","";
			break;

		// ŵ (ѡ)
		case 15:
			setarray @K_Menu0$[0],"","ֿ",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ","Ƴ","ȷѶϢ","ȡ";
			break;

		// ͨ
		default:
			setarray @K_Menu0$[0],"","ֿ.",getbattleflag("guild_storage_in_town")?"ʹùֿ":"","ͷ.","Ƴ."," ѶϢ˵.","ܽ.";
			break;
	}

	// Ῠ
	if(getarg(0)==2) {
		cleararray @K_Menu0$[0],"",7;
		setarray @K_Menu0$[0],"ʹòֿ","ʹÿռƶ","ʹƳ","";
		//setarray @K_Menu0$[0],"ʹòֿ","ʹùֿ","ʹÿռƶ","ʹƳ","";	//TROٷûйֿ
	}
	menu 	@K_Menu0$[0],K_Menu0,@K_Menu0$[1],K_Menu1,@K_Menu0$[2],K_Menu2,
		@K_Menu0$[3],K_Menu3,@K_Menu0$[4],K_Menu4,@K_Menu0$[5],K_Menu5,
		@K_Menu0$[6],K_Menu6,@K_Menu0$[7],K_Menu7;
	K_Menu0:
		set @num,0;
		goto K_Menuf;
	K_Menu1:
		set @num,1;
		goto K_Menuf;
	K_Menu2:
		set @num,2;
		goto K_Menuf;
	K_Menu3:
		set @num,3;
		goto K_Menuf;
	K_Menu4:
		set @num,4;
		goto K_Menuf;
	K_Menu5:
		set @num,5;
		goto K_Menuf;
	K_Menu6:
		set @num,6;
		goto K_Menuf;
	K_Menu7:
		set @num,7;
	K_Menuf:
		if (@K_Menu0$[@num] == "" || @K_Menu0$[@num] == "ʹô") return;
		if (@K_Menu0$[@num] == "ֿ." || @K_Menu0$[@num] == "ʹòֿ" || @K_Menu0$[@num] == "ֿ"){
			if(getarg(0) == 2) callfunc "F_KafStor",2,0,0;
			else callfunc "F_KafStor",0,getarg(3),getarg(0);
			next;
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "ͷ." || @K_Menu0$[@num] == "ʹÿռƶ" || @K_Menu0$[@num] == "ͷ"){
			// 㷢ȷµĽֹѶϢ
			if(getarg(1) == 4 || getarg(1) == 12 || getarg(1) == 13){
				mes "["+ strnpcinfo(0) +"]";
				mes "ǿ㷢ȷܹ˾";
				mes "Ϊ㷢ȷ ͹";
				mes "Э";
				mes "'^ff0000㷢ȷƴͷ^000000'";
				mes "Ĺϵ";
				mes "Ŀǰκδͷ";
				next;
				mes "["+ strnpcinfo(0) +"]";
				mes "Ҫƶʱ";
				mes "ʹ÷ɿͧ";
				next;
				goto M_Menu;
			}
			callfunc "F_KafTele",getarg(0);
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "Ƴ." || @K_Menu0$[@num] == "ʹƳ" || @K_Menu0$[@num] == "Ƴ"){
			if(callfunc("F_KafCart",getarg(0),getarg(4)) == 1) next;
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == " ѶϢ˵." || @K_Menu0$[@num] == " ѶϢȷ." || @K_Menu0$[@num] == "ѶϢȷ." || @K_Menu0$[@num] == "ѶϢ˵." || @K_Menu0$[@num] == "ȷ鱨" || @K_Menu0$[@num] == "ȷѶϢ"){
			callfunc "F_KafInfo",getarg(2);
			goto M_Menu;
		}
		if (@K_Menu0$[@num] == "ܽ." || @K_Menu0$[@num] == " ܽ." || @K_Menu0$[@num] == "" || @K_Menu0$[@num] == "ȡ"){
			callfunc "F_KafEnd",getarg(0),0;
			end;
		}
		if (@K_Menu0$[@num] == "ʹùֿ"){
			callfunc "F_KafStor",1,0;
			next;
			goto M_Menu;
		}

}


// Storage Function =======================================================
function	script	F_KafStor	{
	// Unable to access Guild Storage (Busy)
	if(getarg(0) == 1){
		if(guildopenstorage() == 1){
			mes "["+ strnpcinfo(0) +"]";
			mes "ĺܱǸԱʹòֿ";
			mes "Եһ";
			close2;
			cutin "", 255;
			end;
		}
		cutin "", 255;
		close;
	}

	// Unable to access Normal Storage (Insufficient Basic Skills)
	if(basicskillcheck() && getskilllv(1) < 6){
		mes "["+ strnpcinfo(0) +"]";
		// Niflheim Specific Message
		if (getarg(2) == 1) {
			mes "^666666.....";
			mes ".......ְ..ҵ.......";
			mes "Ҫ.................^000000";
			return;
		}
		mes "ĻҪ6";
		mes "ʹòֿ";
		return;
	}

	// Accessing Normal Storage (Skipped if accessing Storage from Guild castle)
	if(getarg(0) != 2){
		// Consume "Free Ticket for Kafra Storage" if available.
		if(countitem(7059)) delitem 7059,1;
		else {
			if(Zeny<getarg(1)){
				mes "["+ strnpcinfo(0) +"]";
				// Niflheim Specific Message
				if (getarg(2) == 1) {
					percentheal -50,-50;
					mes "^666666....Ǹ..........Ǯ...";
					mes ".........Ҫ15..0...^000000";
					return;
				}
				//Standard Message
				mes "˿͡Ľ.";
				mes "ֿʹ÷ "+getarg(1)+".";
				return;
			}
			set Zeny, Zeny-getarg(1);
			set RESRVPTS, RESRVPTS + (getarg(1)/5);
		}
	}

	// Surpress the "End" message if in guild castle.
	if (getarg(0) != 2) {
		// Niflheim specific Message
		if (getarg(2) == 1) {
			percentheal 0,-10;
			mes "["+ strnpcinfo(0) +"]";
			mes "Ҫ.........ˣлл......ʹ....";
		}
		// Normal message
		else {
			mes "["+ strnpcinfo(0) +"]";
		}
	}
	callfunc("F_CheckKafCode");
	mes "Ҫ򿪲ֿ";
	mes "ллʹ.";
	close2;
	openstorage;
	cutin "", 255;
	end;
}


// Teleport Function ==================================================
function	script	F_KafTele	{
	mes "["+ strnpcinfo(0) +"]";
	mes "˵Ҫȥĵط.";
	next;

	menu 	@wrpC$[0],M_Wrp0, @wrpC$[1],M_Wrp1, @wrpC$[2],M_Wrp2, @wrpC$[3],M_Wrp3, 
		@wrpC$[4],M_Wrp4, @wrpC$[5],M_Wrp5, @wrpC$[6],M_Wrp6;

	M_Wrp0:
		set @num, 0;
		goto L_Warp;
	M_Wrp1:
		set @num, 1;
		goto L_Warp;
	M_Wrp2:
		set @num, 2;
		goto L_Warp;
	M_Wrp3:
		set @num, 3;
		goto L_Warp;
	M_Wrp4:
		set @num, 4;
		goto L_Warp;
	M_Wrp5:
		set @num, 5;
		goto L_Warp;
	M_Wrp6:
		set @num, 6;

	L_Warp:
		if (@wrpC$[@num] == "ȡ") return;
		// Consume "Free Ticket for Kafra Transportation" if available.
		// Do not consume if in Guild castle
		if(countitem(7060) > 0 && getarg(0) != 2) delitem 7060,1;
		else {
			if (Zeny<@wrpP[@num]){
				mes "["+ strnpcinfo(0) +"]";
				mes "˿͡Ľ.";
				mes "ȷ";
				close2;
				cutin "", 255;
				end;
			}
			set Zeny, Zeny-@wrpP[@num];
			set RESRVPTS, RESRVPTS + (@wrpP[@num]/16);
		}
		if (@wrpD$[@num] == "") warp "alberta", 117, 56;
		if (@wrpD$[@num] == "") warp "aldebaran",168,112;
		if (@wrpD$[@num] == "ħ") warp "comodo", 207, 144;
		if (@wrpD$[@num] == "˹³õ") warp "izlude", 91, 105;
		if (@wrpD$[@num] == "") warp "geffen", 120, 39;
		if (@wrpD$[@num] == "޿") warp "morocc", 156, 46;
		if (@wrpD$[@num] == "") warp "payon", 160, 58;
		if (@wrpD$[@num] == "¡") warp "prontera", 116, 72;
		if (@wrpD$[@num] == " ") warp "mjolnir_02", 82, 347;
		if (@wrpD$[@num] == "˹ ") warp "cmd_fild07", 127, 134;
		if (@wrpD$[@num] == "˵¶") warp "gef_fild10", 52, 326;
		if (@wrpD$[@num] == "") warp "umbala", 100, 154;
		if (@wrpD$[@num] == "ŵ") warp "yuno", 157, 123;
		cutin "", 255;
		end;
}


// Cart Function ========================================================
function	script	F_KafCart	{
	// Ensure that the class wanting to rent a pushcart is a merchant
	if(baseClass != Job_Merchant){
		mes "["+ strnpcinfo(0) +"]";
		mes "ܱǸ";
		mes "Ƴ˺ʦͻѧרõķ";
		return 1;
	}
	// Make sure the invoking character does not have a cart already
	else if(checkcart() == 1){
		if(getarg(1) == 13) mes "[ ְԱ]";
		else mes "["+ strnpcinfo(0) +"]";
		mes "ѾƳ";
		return 1;
	}
	// ħе޷Ƴ
	else if(checkriding() == 1){
		if(getarg(1) == 13) mes "[ ְԱ]";
		else mes "["+ strnpcinfo(0) +"]";
		mes "ħеʱ޷Ƴ.";
		return 1;
	}

	// Consume "Free Ticket for the Cart Service" if available.
	// Do not consume if in Guild castle.
	if(countitem(7061) > 0 && getarg(0) != 2) delitem 7061,1;
	else {
		mes "["+ strnpcinfo(0) +"]";
		mes "Ƴ "+getarg(1)+"";
		mes "ûѧؼܵĻ";
		mes "ûƳ";
		mes "Ҫ?";
		next;
		menu "Ƴ",-, "ȡ",M_End;
			if(Zeny<getarg(1)){
				if(getarg(1) == 13) mes "[ ְԱ]";
				else mes "["+ strnpcinfo(0) +"]";
				mes "װĹ˿ͣĽǮ";
				mes "ƳҪ"+getarg(1)+"";
				return 1;
			}
			set Zeny,Zeny-getarg(1);
			set RESRVPTS, RESRVPTS + 48;
	}
	setcart;
	return 1;

M_End:
	return 0;
}


// Pass Function ===============================================================
function	script	F_KafGuide	{
	mes "["+ strnpcinfo(0) +"]";
	mes "WIP...";
	return;
}

// Special Reserve Points Function ===========================================
function	script	F_KafInfo	{

	sM_Menu:
//Uncomment next line to block Kafra Storage Protection
//	if(getarg(0) == 0) menu "Check Special Reserve Points.",sM_ResChk, "Kafra Employee Locations",sM_KafLoc, "ܽ",sM_End;
	if(getarg(0) == 0) menu "ۻȷ",sM_ResChk, "ֿ",sM_KafCode, "λ˵",sM_KafLoc, "ܽ",sM_End;

	sM_ResChk:
		mes "["+ strnpcinfo(0) +"]";
		mes strcharinfo(0) + "˿͵Ĵ";
		mes RESRVPTS+ "";
		next;
		mes "["+ strnpcinfo(0) +"]";
		mes "ڿ԰ѴƷ.";
		mes "÷Ŀ˳õƷ~";
		next;
		if(getarg(0) == 1) return;
		goto sM_Menu;

	sM_KafLoc:
		viewpoint 1,@viewpX[0],@viewpY[0],1,0xFF00FF;
		viewpoint 1,@viewpX[1],@viewpY[1],2,0xFF00FF;
		viewpoint 1,@viewpX[2],@viewpY[2],3,0xFF00FF;
		viewpoint 1,@viewpX[3],@viewpY[3],4,0xFF00FF;
		next;
		viewpoint 2,@viewpX[0],@viewpY[0],1,0xFF00FF;
		viewpoint 2,@viewpX[1],@viewpY[1],2,0xFF00FF;
		viewpoint 2,@viewpX[2],@viewpY[2],3,0xFF00FF;
		viewpoint 2,@viewpX[3],@viewpY[3],4,0xFF00FF;
		goto sM_Menu;

	sM_KafCode:
		callfunc("F_SetKafCode","["+ strnpcinfo(0) +"]","");

	sM_End:
		return;
}


// End Function =====================================================
//  arg(0): used to determine what message to display.
//  arg(1): used to determine if save message is displayed.
//  arg(2): used to display the name of the area you're saving in.
//===================================================================
function	script	F_KafEnd	{
	mes "["+ strnpcinfo(0) +"]";
	//Save
	if(getarg(1)==1) {
		mes "Ѿ";
		mes "ллʹ.";
	}

	// Generic End
	else if(getarg(0)==0 || getarg(0)==5 || getarg(0)==3) {
		mes "ǿ˾ķΪù˿Ƿĺͷʹ. ǻᾡŬõķϸӪҵ.";
		mes "ллʹǿ˾ķ.";
	}

	else if(getarg(0)==4 || getarg(0)==6) {
		mes "ǿ˾ķǣΪù˿ǷĺͷʹãǻᾡŬõķϸӪҵ";
		mes "ллʹ";
	}

	// Niflheim End
	else if(getarg(0)==1) {
		percentheal 0,- 25;
		mes "ǣ...˾..."; 
		mes "һֱ........."; 
		mes "ۺʱ... ε..."; 
		mes "...κԭ..."; 
		mes "......";
	}

	close2;
	cutin "", 255;
	end;
}

// Check Storage Password Function ====================
function	script	F_CheckKafCode	{
	if(#kafra_code==0) return;
	mes "˿ʹòֿ뱣";
	mes "Ĳֿ룺";
	set @code_,0;
	input @code_;
	if(@code_ != #kafra_code - 1337 - getcharid(3)) {
		dispbottom "";
		close2;
		cutin "",255;
		end;
	}
	set @kafcode_try,0;
	set @code_,0;
	mes "ȷ";
	mes "򿪲ֿ⣬ллʹ";
	close2;
	openstorage;
	cutin "", 255;
	end;
}

// Set / Change / Clear Storage Password Function ====================
// getarg(0) = NPC Name, getarg(1) = Company Name
function	script	F_SetKafCode	{
	mes getarg(0);
	if(#kafra_code) {
		mes "ĲֿĿǰ뱣";
		mes "Ҫʲô?";
		next;
		menu " -> 5000z",-,
		"Ƴ -> 1000z",M_CLEAR,
		"ȡ",M_END;
	} else {
		mes ""+getarg(1)+" ¡صΪһ·";
		mes "'ֿ'";
		next;
		menu " -> 5000z",M_SET,
		"ȡ",M_END;
	}

	mes getarg(0);
	mes "^0000FF^000000.";
	set @code,callfunc("F_EntKafCode");
	if(@code==0 || @code != #kafra_code) {
		mes "";
		emotion e_hmm;
		goto M_END;
	}
	next;

M_SET:
	mes getarg(0);
	mes "Ҫ^FF0000^000000";
	set @code,callfunc("F_EntKafCode");
	if(@code==0) {
		mes "úЧ";
		emotion e_hmm;
		goto M_END;
	}
	next;
	mes getarg(0);
	if(Zeny < 5000) goto L_ZENY;
	set Zeny,Zeny-5000;
	//set RESRVPTS, RESRVPTS + (5000/50);	//hardcoded password doesn't add pts

	set #kafra_code,@code+getcharid(3)+1337;
	mes "ֿɣ";
	mes "лʹ "+getarg(1)+".";
	emotion e_thx;
	goto M_END;	

M_CLEAR:
	mes getarg(0);
	mes "Ĳֿ";
	set @code,callfunc("F_EntKafCode");
	if(@code==0) {
		mes "";
		emotion e_hmm;
		goto M_END;
	}
	next;
	mes getarg(0);
	if(Zeny < 1000) goto L_ZENY;
	set Zeny,Zeny-1000;
	//set RESRVPTS, RESRVPTS + (1000/50);	//hardcoded password doesn't add pts
	if(@code == #kafra_code) {
		set #kafra_code,0;
		mes "ֿƳ";
		mes "лʹ"+getarg(1)+".";
		emotion e_thx;
	} else {
		mes "󣬽û1000";
		emotion e_sry;
	}
	goto M_END;

L_ZENY:
	mes "ϵĽǮ";
	emotion e_cash;
M_END:
	close2;
	cutin "",255;
	end;
}

// Basic Password Validation Function ====================
function	script	F_EntKafCode	{
	mes " 1000~10000000 ֮:";
	set @code_,0;
	set @kafcode_try,@kafcode_try+1;
	if(@kafcode_try>10) {
		set @kafcode_try,0;
		logmes "Hack: Tried to fit storage password.";
	}
	input @code_;
	if(@code_<1000) {
		mes "볤ȹ̣";
		mes " 1000~10000000 ֮";
		return 0;
	}
	if(@code_>10000000) {
		mes "볤ȹ";
		mes " 1000~10000000 ֮";
		return 0;
	}
	return @code_;
}
