//===== rAthena Script =======================================
//= Kafra Express - Stylist Module
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= rAthena SVN8637+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Offers dying of hair, clothes and hair-style adjusts
//===== Additional Comments: =================================
//= See config.txt for configuration.
//============================================================

-	script	keInit_dye	-1,{
OnInit:	//Load Config
	donpcevent "keConfig::OnLoadDye";
	end;
}

function	script	F_keStylist	{

	function SF_inputpalette;
	function SF_wheelpalette;

	set @jobClass,eaclass(class);
	if (@jobClass == -1)
		set @maxCDye,0;
	else {
	if ((@jobClass&EAJ_BASEMASK) == EAJ_NOVICE) {
		if (@jobClass&EAJL_2)
			set @maxCDye, $@kedy_clothJSN;
		else
			set @maxCDye, $@kedy_clothJN;
	} else {
		if (@jobClass&EAJL_2)
			set @maxCDye, $@kedy_clothJ2ND;
		else
			set @maxCDye, $@kedy_clothJ1ST;
	} }
	do {
		if ($@kedy_enableHairstyle) {
			set @kmenu, select(
				"- Return",
				"- Change hairstyle (current is "+getlook(1)+"/max is "+$@kedy_styles+")",
				"- Change hairstyle (by wheel)",
				"- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")",
				"- Dye hair (by wheel)",
				"- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")",
				"- Dye clothes (by wheel)"
			);
		} else {
			set @kmenu, select(
				"- Return",
				"- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")",
				"- Dye hair (by wheel)",
				"- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")",
				"- Dye clothes (by wheel)"
			);
			if (@kmenu > 1)
				set @kmenu, @kmenu+2;
		}
		switch (@kmenu) {
		case 2:	//Hair Style Input
			SF_inputpalette 1,$@kedy_styles;
			break;
		case 3:	//Hair Style Wheel
			SF_wheelpalette 1,$@kedy_styles;
			break;
		case 4:	//Hair Dye Input
			SF_inputpalette 6,$@kedy_hair;
			break;
		case 5:	//Hair Dye Wheel
			SF_wheelpalette 6,$@kedy_hair;
			break;
		case 6:	//Clothes Input
			SF_inputpalette 7,@maxCDye;
			break;
		case 7:	//Clothes Wheel
			SF_wheelpalette 7,@maxCDye ;
			break;
		}
	} while (@kmenu > 1);
	return;
	
//Subfunction: SF_inputpalette(int part, int maxPalette)
//Sets a palette from the user's request.
function	SF_inputpalette {
	input @pal;
	if (@pal < 0 || @pal > getarg(1)) {
		callfunc "F_keIntro", e_swt2, "Sorry, we do not have that dye available.";
		return;
	}
	setlook getarg(0),@pal;
	emotion e_lv;
}	//SF_ end

//Subfunction: SF_wheelpalette(int part, int maxPalette)
//Sets a palette through browsing.
function	SF_wheelpalette {
	set @loc, getarg(0);
	set @max, getarg(1);
	set @pal, getlook(@loc);
	set @dir, 1;
	do {
		if (@dir > 0)
			set @submenu, select(
				"Next",
				"Previous",
				"Done (current is "+@pal+")"
			);
		else
			set @submenu, select(
				"Previous",
				"Next",
				"Done (current is "+@pal+")"
			);
		switch (@submenu) {
		case 2: //Swap direction
			set @dir, @dir*-1;
		case 1:
			set @pal, @pal+@dir;
			if (@pal < 0)
				set @pal, @max;
			else if (@pal > @max)
				set @pal, 0;
			setlook @loc,@pal;
		}
	} while (@submenu != 3);
	emotion e_lv2;
}	//SF_ end

}
