//===== eAthena Script =======================================
//= Kafra Express - Stat/Reset Module
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.2
//===== Compatible With: =====================================
//= eAthena SVN R3424+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Offers stat raising and Stat/Reset skills
//===== Additional Comments: =================================
//= See config.txt for configuration.
//============================================================

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

function	script	F_keStats	{

	function SF_statRaise;

	set @discount,callfunc("F_keCost",100,$@kest_discount);
	do {
		set @kmenu, select(
			"- Return",
			"- Raise Stats",
			"- Reset Stats ("+$@kest_stResetCost+"z+"+$@kest_BaseLvCost+"/blv)",
			"- Reset Skills ("+$@kest_skResetCost+"z+"+$@kest_JobLvCost+"/jlv)",
			"- Reset Both ("+$@kest_resetCost+"z+"+$@kest_BothLvCost+"/lv)"
		);
		switch (@kmenu) {
		case 2: //Stat raising
			SF_statRaise();
			set @cost, 0;
			set @reset, 0;
			break;
		case 3: //Reset Stat
			set @cost, $@kest_stResetCost+BaseLevel*$@kest_BaseLvCost;
			set @reset, 1;
			break;
		case 4: //Reset Skills
			set @cost, $@kest_skResetCost+(JobLevel+jobchange_level)*$@kest_JobLvCost;
			set @reset, 2;
			break;
		case 5: //Reset Both
			set @cost, $@kest_resetCost+(BaseLevel+JobLevel+jobchange_level)*$@kest_BothLvCost;
			set @reset, 3;
			break;
		default: //Cancel
			set @cost, 0;
			set @reset, 0;
			break;
		}
		if (@reset > 0) {
			if (select("- Cancel","- Reset for "+(@cost*@discount/100)+"z") == 2) {
				if (!(callfunc("F_keCharge",@cost,$@kest_discount,1))) { 
					callfunc "F_keIntro", e_an, "Sorry, you don't have enough Zeny.";
				} else {
					if (@reset&1)
						ResetStatus;
					if (@reset&2) {
						if ($@kest_resetBasic)
							ResetSkill;
						else {
							set @skill1,getskilllv(1);
							ResetSkill;
							skill 1,@skill1,0;
							set SkillPoint,SkillPoint-@skill1;
						}
					}
					emotion e_hmm;
				}
			}
		}
	} while (@kmenu > 1);
	return;
	
function SF_statRaise {
	do {
		set @submenu, select(
			"- Return",
			"- Raise Strength",
			"- Raise Agility",
			"- Raise Vitality",
			"- Raise Intelligence",
			"- Raise Dexterity",
			"- Raise Luck"
		);
		switch (@submenu) {
		case 2:
			set @stat,bStr;
			break;
		case 3:
			set @stat,bAgi;
			break;
		case 4:
			set @stat,bVit;
			break;
		case 5:
			set @stat,bInt;
			break;
		case 6:
			set @stat,bDex;
			break;
		case 7:
			set @stat,bLuk;
			break;
		default:
			return;
		}
		input @qty;
		if (@qty <1) {
			callfunc "F_keIntro", e_swt, "I don't lower stats, try resetting them.";
		} else if (@qty >100) {
			callfunc "F_keIntro", e_swt2, "Sorry... I can only raise stats up to 100 at a time.";
		} else {
			do {
				statusup @stat;
				set @qty,@qty-1;
			} while (@qty > 0);
			emotion e_ok;
		}
	} while (@submenu > 1);
}

}