// JavaScript Document
/*
メモ：
戦士の回復：必要Lv不明
捨て身：必要lv不明
*/
var myLv = 80;
var SP = 79;
var allSP;
var Skill = new Array();
//Skill["名前"] = new Array(初期が→無効[0]/有効[1], 現在のLvを納める変数（普通は0）, 最大Lv,+ボタンのid, -ボタンのid,
//Lv表示divのid, 1Lv上げるごとに消費するスキルP, スキル習得必要Lv0,1,2,3,…最大10まで,
///* 前提 */ このスキルを前提とするSkillID, 左が出現するSkillLv, SkillID2, 出現Lv2);
Skill["二刀流奥義"] = new Array(1,0,5,"add0","dec0","Lv0",5,/*必要Lv*/60,70,80,90,100,0,0,0,0,0,/* 前提 */"二刀マスタリI",1,"",0);
Skill["二刀マスタリI"] = new Array(0,0,5,"add1","dec1","Lv1",1,/*必要Lv*/1,2,3,4,5,0,0,0,0,0,/* 前提 */"二刀マスタリII",5,"",0);
Skill["二刀マスタリII"] = new Array(0,0,10,"add2","dec2","Lv2",1,/*必要Lv*/15,16,17,18,19,20,21,22,23,24,
							  /* 前提 */"二刀マスタリIII",10,"",0);
Skill["二刀マスタリIII"] = new Array(0,0,10,"add3","dec3","Lv3",1,/*必要Lv*/15,16,17,18,19,20,21,22,23,24,/* 前提 */"",0,"",0);
Skill["精神の暴走"] = new Array(1,0,10,"add4","dec4","Lv4",3,/*必要Lv*/60,65,70,75,80,85,90,95,100,105,/* 前提 */"",0,"",0);
Skill["力の暴走"] = new Array(1,0,10,"add5","dec5","Lv5",3,/*必要Lv*/60,65,70,75,80,85,90,95,100,105,/* 前提 */"",0,"",0);
Skill["眼力の暴走"] = new Array(1,0,10,"add6","dec6","Lv6",3,/*必要Lv*/60,65,70,75,80,85,90,95,100,105,/* 前提 */"",0,"",0);
Skill["二刀流移動術"] = new Array(1,0,1,"add7","dec7","Lv7",0,/*必要Lv*/80,0,0,0,0,0,0,0,0,0,/* 前提 */"",0,"",0);
//筋力強化系統
Skill["筋力強化"] = new Array(0,0,10,"add8","dec8","Lv8",1,/*必要Lv*/5,6,7,8,9,10,11,12,13,14,/* 前提 */"憤怒",5,"正確な攻撃",10);
Skill["憤怒"] = new Array(0,0,10,"add9","dec9","Lv9",1,/*必要Lv*/10,11,12,13,14,15,16,17,18,19,/* 前提 */"激怒",10,"",0);
Skill["激怒"] = new Array(0,0,10,"add10","dec10","Lv10",1,/*必要Lv*/45,46,47,48,49,50,51,52,53,54,/* 前提 */"バーサーカー",10,"",0);
Skill["バーサーカー"] = new Array(0,0,10,"add11","dec11","Lv11",1,/*必要Lv*/60,61,62,63,64,65,66,67,68,69,
							/* 前提 */"バーサーカーコントロール",10,"",0);
Skill["バーサーカーコントロール"] = new Array(0,0,1,"add12","dec12","Lv12",5,/*必要Lv*/70,0,0,0,0,0,0,0,0,0,/* 前提 */"武器の雄",1,
								  "",0);
Skill["武器の雄"] = new Array(0,0,10,"add13","dec13","Lv13",2,/*必要Lv*/90,91,92,93,94,95,96,97,98,99,/* 前提 */"",10,"",0);
//正確な攻撃系統
Skill["正確な攻撃"] = new Array(0,0,10,"add14","dec14","Lv14",1,/*必要Lv*/10,11,12,13,14,15,16,17,18,19,/* 前提 */"迅速移動",10,"",0);
Skill["迅速移動"] = new Array(0,0,10,"add15","dec15","Lv15",1,/*必要Lv*/20,21,22,23,24,25,26,27,28,29,/* 前提 */"危険感知",10,"",0);
Skill["危険感知"] = new Array(0,0,10,"add16","dec16","Lv16",1,/*必要Lv*/40,41,42,43,44,45,46,47,48,49,/* 前提 */"戦士の回復",10,"",0);
Skill["戦士の回復"] = new Array(0,0,10,"add17","dec17","Lv17",2,/*必要Lv*/0,0,0,0,0,0,0,0,0,0,/* 前提 */"捨て身",10,"",0);
Skill["捨て身"] = new Array(0,0,10,"add18","dec18","Lv18",2,/*必要Lv*/0,0,0,0,0,0,0,0,0,0,/* 前提 */"",0,"",0);
//圧倒する目つき系統
Skill["圧倒する目つき"] = new Array(1,0,10,"add19","dec19","Lv19",1,/*必要Lv*/25,26,27,28,29,30,31,32,33,34,
							 /* 前提 */"威圧する目つき",5,"",0);
Skill["威圧する目つき"] = new Array(0,0,10,"add20","dec20","Lv20",1,/*必要Lv*/35,36,37,38,39,40,41,42,43,44,
    						 /* 前提 */"殺気のオーラ",5,"",0);
Skill["殺気のオーラ"] = new Array(0,0,10,"add21","dec21","Lv21",2,/*必要Lv*/50,51,52,53,54,55,56,57,58,59,
							/* 前提 */"戦士の咆哮",10,"",0);
Skill["戦士の咆哮"] = new Array(0,0,10,"add22","dec22","Lv22",2,/*必要Lv*/0,0,0,0,0,0,0,0,0,0,/* 前提 */"九死に一生",10,"",0);
Skill["九死に一生"] = new Array(0,0,10,"add23","dec23","Lv23",2,/*必要Lv*/0,0,0,0,0,0,0,0,0,0,/* 前提 */"",0,"",0);
//---
function add(SkillID){
	if(myLv < Skill[SkillID][7 + Skill[SkillID][1]]){//キャラLvが必要Lvより少ないか？
	   caution("必要キャラLv:"+Skill[SkillID][7 + Skill[SkillID][1]]+"に達していません。");
	   return false;//ならば、スキルLvを上げることはできない
	}
	if(SP < Skill[SkillID][6]){//現在SPが消費SPより多いか？
	   caution("SPが足りません。");
	   return false;//ならば、スキルLvを上げることはできない
	}
	notice(SkillID+"　Lv+1につき"+Skill[SkillID][6]+"SP消費");
	Skill[SkillID][1] += 1;//1Lv上げる
	SP -= Skill[SkillID][6];//SP消費
	document.getElementById('SP').innerHTML = SP;//SP表示反映
	document.getElementById(Skill[SkillID][5]).innerHTML = Skill[SkillID][1];//Lvをdivに反映
	if(Skill[SkillID][17] != ""){//このスキルを前提としている物があるか？
	   if(Skill[SkillID][1] >= Skill[SkillID][18]){//前提を満たしたとき、次スキル出現（有効化）
	       notice(SkillID+" Lv"+Skill[SkillID][18]+"より、"+Skill[SkillID][17]+"が出現。");
		   enable(Skill[SkillID][17], Skill[Skill[SkillID][17]][3], Skill[Skill[SkillID][17]][4]);
		   if(Skill[Skill[SkillID][17]][1] >= Skill[Skill[SkillID][17]][2]){//次スキルが既に最大Lvになっていないか？
		      limit(Skill[Skill[SkillID][17]], Skill[Skill[SkillID][17]][3], Skill[Skill[SkillID][17]][4]);
		   }
	   }
	}
	if(Skill[SkillID][19] != ""){//このスキルを前提としている物2があるか？  
	   if(Skill[SkillID][1] >= Skill[SkillID][20]){//前提を満たしたとき、次スキル出現（有効化）
	       notice(SkillID+" Lv"+Skill[SkillID][20]+"より、"+Skill[SkillID][19]+"が出現。");
		   enable(Skill[SkillID][19], Skill[Skill[SkillID][19]][3], Skill[Skill[SkillID][19]][4]);
		   if(Skill[Skill[SkillID][19]][1] >= Skill[Skill[SkillID][19]][2]){//次スキルが既に最大Lvになっていないか？
		      limit(Skill[Skill[SkillID][19]], Skill[Skill[SkillID][19]][3], Skill[Skill[SkillID][19]][4]);
		   }
	   }
	}
	if(Skill[SkillID][1] >= Skill[SkillID][2]){//このスキルの最大lvに達したか？
		limit(SkillID, Skill[SkillID][3], Skill[SkillID][4]);//達したので+ボタンを無効化にする
	}
		
}
function dec(SkillID){
	if(Skill[SkillID][1] == 0){//このスキルのlvが0か？
	   caution("これ以上スキルLvを下げることはできません。");
	   return false;//ならば、これ以上下がらないので減らさない。
	}
	notice(SkillID+"　Lv-1につき"+Skill[SkillID][6]+"SP還元");
	Skill[SkillID][1] -= 1;//1Lv下げる
	SP += Skill[SkillID][6];//SP還元
	document.getElementById('SP').innerHTML = SP;//SP表示反映
	document.getElementById(Skill[SkillID][5]).innerHTML = Skill[SkillID][1];//divに反映
	if(Skill[SkillID][1] < Skill[SkillID][2]){//下げて、最大lvではなくなったか？
		limitoff(SkillID, Skill[SkillID][3], Skill[SkillID][4]);//下がったので+ボタンを再度有効にする
	}
	if(Skill[SkillID][17] != ""){//このスキルを前提としている物があるか？
	   if(Skill[SkillID][1] < Skill[SkillID][18]){//前提より下がったとき、次スキル消去（無効化）
		   disable(Skill[SkillID][17], Skill[Skill[SkillID][17]][3], Skill[Skill[SkillID][17]][4]);
		   disable(Skill[Skill[SkillID][17]][17], Skill[Skill[Skill[SkillID][17]][17]][3],
																					   Skill[Skill[Skill[SkillID][17]][17]][4]);
		   disable(Skill[Skill[Skill[SkillID][17]][17]][17], Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][3],	   
		      Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][4]);
		   disable(Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17], 
			  Skill[Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17]][3],	   
		      Skill[Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17]][4]);
		   disable(Skill[Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17]][17], 
			  Skill[Skill[Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17]][17]][3],	   
		      Skill[Skill[Skill[Skill[Skill[Skill[SkillID][17]][17]][17]][17]][17]][4]);
		   
		   
	   }
	}
	if(Skill[SkillID][19] != ""){//このスキルを前提としている物2があるか？
		if(Skill[SkillID][1] < Skill[SkillID][20]){//前提より下がったとき、次スキル消去（無効化）
			disable(Skill[SkillID][19], Skill[Skill[SkillID][19]][3], Skill[Skill[SkillID][19]][4]);
		}
	}
}
function disable(SkillID, add, dec){//スキルを無効化
	document.getElementById(SkillID).style.backgroundColor='#CCCCCC'//背景色を灰色に
	document.getElementById(add).disabled = true;
	document.getElementById(dec).disabled = true;
	SP += Skill[SkillID][1] * Skill[SkillID][6];//SP還元
	document.getElementById('SP').innerHTML = SP;//SP表示反映
	Skill[SkillID][1] = 0;//無効になったのでスキルLvは0になる
	document.getElementById(Skill[SkillID][5]).innerHTML = Skill[SkillID][1];//スキルLv表示反映
	
}
function limit(SkillID, add, dec){//最大lvまで上がったら+のみを無効化する処理
	document.getElementById(add).disabled = true;
}
function limitoff(SkillID, add, dec){//最大lvより下がったので+を有効に戻す処理
    document.getElementById(add).disabled = false;
}
function enable(SkillID, add, dec){//スキルを有効化
	document.getElementById(SkillID).style.backgroundColor='#FFFFFF'
	document.getElementById(add).disabled = false;
	document.getElementById(dec).disabled = false;
}
function myLvadd(num){
	myLv += num;
	SP += num;
	document.getElementById('myLv').innerHTML = myLv;
	document.getElementById('SP').innerHTML = SP;
}
function myLvdec(num){	
	if(SP - num < 0){//下げるとSPが負の値になってしまうか？
	    caution("これ以上下げるとSPが足りなくなります。");
		return false;//無理ならば処理しない
	}else{
		caution("");
	}
	myLv -= num;
	SP -= num;
	document.getElementById('myLv').innerHTML = myLv;
	document.getElementById('SP').innerHTML = SP;
}
function needLv(SkillID){
	if(Skill[SkillID][1] != 0){//そのスキルに1でも振っているか？
		caution(SkillID+"の現在の必要キャラLvは"+Skill[SkillID][6 + Skill[SkillID][1]]+"だね！！");
		return Skill[SkillID][6 + Skill[SkillID][1]];//現Lvの必要Lvを計算
		
	}else{
		return 0;//振っていない場合は0を返す
	}
}