
var i;

function myInnerHtml(wIH1,wIH2,wIH3){ // insert into html
	wIHOB = document.getElementById(wIH1);
	
	if (wIHOB == null){
		wIHOB = document.getElementById("PRT");
		wIHOB.insertAdjacentHTML('BeforeEnd',wIH1 + " " + wIH2);
		return;
	}

	if(wIH3 == 0){ // replace
		while(wIHOB.hasChildNodes()){
			wIHOB.removeChild(wIHOB.firstChild);
		}
		wIHOB.innerHTML = wIH2;
	}else{ // add
		// not ff compatible
		wIHOB.insertAdjacentHTML('BeforeEnd',wIH2);

	}
}

function Word(wo){
	if(wo==85)
		return "ATK"; //WordData[40][Lang];
	if(WordData[wo][Lang] == undefined){
		if(WordData[wo][1] == undefined)
			return WordData[wo][0];
		else
			return WordData[wo][1];
	}
	return WordData[wo][Lang];
}

function ATKbai01(){ // BonusMod ATK to n_A_DMG
	var wA01 = 100;
	if(n_A_ActiveSkill != skill_MO_OCCULT_IMPACTION &&n_A_ActiveSkill != skill_MO_ASURA && n_A_ActiveSkill != skill_MO_MAX_ASURA){
		if(SkillSearch(skill_SW_BERSERK))
			wA01 += 32;
		else if(n_A_PassSkill6[pass_VI_PROVOKE])
			wA01 += 2 + 3 * n_A_PassSkill6[pass_VI_PROVOKE];
		else if(n_A_PassSkill2[pass_II_ALOE])
			wA01 += 5;
//		if(SkillSearch(skill_LK_CONCENTRATION))
//			wA01 += SkillSearch(skill_LK_CONCENTRATION) * 5;
//		if(SkillSearch(skill_SN_TRUE_SIGHT))
//			wA01 += SkillSearch(skill_SN_TRUE_SIGHT) * 2;
		if(n_A_PassSkill5[pass_V_ATK])
			wA01 += 100;
		if(n_A_PassSkill6[pass_VI_MUR_BONUS])
			wA01 += 10;
		if(StPlusCalc2(87))
			wA01 += StPlusCalc2(87);
		if(n_A_IJYOU[status_CURSED])
			wA01 -= 25;
	}
	for(var i=0;i<=2;i++){
		n_A_DMG[i] = n_A_DMG[i] * wA01 / 100;
		n_A_CriATK[i] = n_A_CriATK[i] * wA01 / 100;
	}
}

function ATKbai02(wATKbai,ch_A02){ // skillmod + x - (start skillmod, critAtk:normalatk)
	wA02 = wATKbai * 100;
	wA02 = calcSkillModAdditions(wA02);
		
	if(ch_A02 == 0){
		if(n_A_Weapon_zokusei!=BK_Weapon_zokusei)
			n_A_DMG = setBaseDmg(n_A_DMG,n_A_Weapon_zokusei);
		n_A_DMG[0] = Math.floor(n_A_DMG[0] * wA02 /100);
		n_A_DMG[1] = Math.floor(n_A_DMG[1] * wA02 /100);
		n_A_DMG[2] = Math.floor(n_A_DMG[2] * wA02 /100);
	}else{
		if(n_A_Weapon_zokusei!=BK_Weapon_zokusei)
			n_A_CriATK = setBaseDmg(n_A_CriATK,n_A_Weapon_zokusei);
		
		n_A_CriATK[0] = Math.floor(n_A_CriATK[0] * wA02 /100);
		n_A_CriATK[1] = Math.floor(n_A_CriATK[1] * wA02 /100);
		n_A_CriATK[2] = Math.floor(n_A_CriATK[2] * wA02 /100);
	}
}

function BattleTAKA(){ // Calc FalconDamage
	if(n_A_WeaponType==weapTyp_BOW && SkillSearch(118) && n_A_ActiveSkill !=272){
		wBTw1 = Math.floor((n_A_JobLV -1) / 10 +1);
		if(wBTw1 > 5)wBTw1=5;
		wBTw2 = SkillSearch(118);
		if(wBTw2 < wBTw1)
			wBTw1 = wBTw2;
		wBT = 80 + Math.floor(n_A_DEX /10)*2 + Math.floor(n_A_INT/2)*2 + SkillSearch(119) *6;
		wBT = Math.floor(wBT * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
		wBT = tPlusDamCut(wBT);
		wBTw3 = Math.round((1 + n_A_LUK * 0.3)*100)/100;
		if(n_B[en_ID] == 44)
			wBT = 0;
		str_bSUBname += "Falcon Damage<BR>";
		n_TAKA_DMG = wBT * wBTw1;
		str_bSUB += n_TAKA_DMG +" ("+ wBT +" x "+ wBTw1 +"Hit)";
		str_bSUB += "("+ wBTw3 +"% Chance)<BR>";
		wBT = n_TAKA_DMG * wBTw3 /100;
		wBT = wBT * (w_HIT + ((100 - w_HIT) * w_Cri /100)) /100;
		wBTw1=0;
		return Math.round(wBT *100)/100;
	}else{
		n_TAKA_DMG = 0;
		return 0;
	}
}

function BattleCalc(w_atk,w_2){ // Calc Dmg from RAWDmg (rawDmg, (min,avg,max,crit:=10))

	if(w_2==10)
		w_atk=BattleCalc4(w_atk*1.4,w_2,0);
	else
		w_atk=BattleCalc4(w_atk,w_2,0);

	w_atk = Max(0, w_atk);
				
	w_atk += n_A_MasteryATK;

	w_atk = BattleCalc2(w_atk);

	return Math.floor(w_atk);
}

function BattleCalc2(w999){ // (NeverMiss) Damage - (startDamage)
	
	w999_AB = 0;
	if(w999 > 0)
		w999_AB = 1;

	w999 += 2 * SkillSearch(skill_BS_WEAPONRY_RESEARCH);
	
	if(n_A_WeaponType == weapTyp_NONE && SkillSearch(skill_TK_SPRINT))
		if(n_A_ActiveSkill==skill_TK_TORNADO_KICK || n_A_ActiveSkill==skill_TK_HEEL_DROP || n_A_ActiveSkill==skill_TK_ROUNDOUSE || n_A_ActiveSkill==skill_TK_COUNTER_KICK)
			w999 += 10 * SkillSearch(skill_TK_SPRINT);

	if(n_A_JobSearch2()==cls_MON)
		w999 += 3 * SkillSearch(skill_MO_SPHERE);
	else
		w999 += 3 * n_A_PassSkill2[10];
	
	w999 += 3 * SkillSearch(skill_GS_COIN_FLIP);

	
	if(n_A_WeaponType != weapTyp_NONE && w999_AB == 1)
		w999 += 20 * SkillSearch(skill_LK_AURA_BLADE);

	if(wBCEDPch==0){
		if(n_A_ActiveSkill==skill_TH_ENVENOM || n_A_ActiveSkill==skill_HU_FANTASTIC_ARROW)
			w999 += 15 * n_A_ActiveSkillLV;
		if(n_A_ActiveSkill==skill_AS_POISON_REACT && (n_B[en_ELEMENT] < 50 ||  60 <= n_B[en_ELEMENT]))
			w999 += 75;
	}
	if(n_A_ActiveSkill==skill_GS_MAGICAL_BULLET)
		w999 += Math.floor(n_A_MATK[w_MagiclBulet] * defReduction(n_B[en_HARDMDEF]) - n_B_MDEF2); // MDef
	if(n_A_ActiveSkill==skill_GS_GUNSLINGER_MINE)
		w999 += n_A_ActiveSkillLV * 50;
	
	if(cardOBJ[n_A_card[card_loc_WEAPON_I]][card_att_ID]==106 && cardOBJ[n_A_card[card_loc_WEAPON_II]][card_att_ID]==106 && cardOBJ[n_A_card[card_loc_WEAPON_III]][card_att_ID]==106){ // StarCrumb
		w999 += 40;
	}else{
		for(i=0;i<=2;i++){
			if(cardOBJ[n_A_card[i]][card_att_ID]==106)
				w999 += 5;
		}
	}
	if(n_A_card[card_loc_WEAPON_IV]==106)
		w999 += 10;
	
	if(n_A_ActiveSkill == skill_NIN_THROW_DAGGER){
		w999 += SyurikenOBJ[eval(document.calcForm.SkillSubNum.value)][0];
		w999 += 3 * SkillSearch(skill_NIN_DAGGER_THROWING_PRACTICE);
		w999 += 4 * n_A_ActiveSkillLV;
	}
	
	if(n_A_ActiveSkill == skill_NIN_THROW_KUNAI)
		w999 += KunaiOBJ[eval(document.calcForm.SkillSubNum.value)][0] * 3;

	w999 = BaiCI(w999);
	
	if(n_A_ActiveSkill==skill_RG_BACK_STAB && n_A_WeaponType==weapTyp_BOW)
		w999 = Math.floor(w999 / 2);

	
	if(n_Nitou && n_A_ActiveSkill==skill_ALL_BASIC_ATTACK){
		if(n_A_WeaponType != weapTyp_NONE)
			w999 = Math.floor(w999 * (50 + SkillSearch(skill_AS_RIGHTHAND_MASTERY) *10) /100);
	}


	if(n_A_ActiveSkill==skill_GS_MAGICAL_BULLET)
		w999 = w999 * zokusei[n_B[en_ELEMENT]][ele_GHOST] / 100;
	if(n_A_ActiveSkill==skill_GS_GUNSLINGER_MINE)
		w999 = w999 * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL] / 100;
	if(Taijin==1) // enemy human
		if(n_A_ActiveSkill==skill_HEAT || n_A_ActiveSkill==skill_HEAT_WALL)
			w999 = 0;

	return w999;
}

function BattleCalc3(w998){
	wBC3_3dan = w998B * TyouEnkakuSousa3dan;
	wBC3_DA = w998E * w998 * 2;
	wBC3_Cri = w998G * n_A_CriATK[1];
	wBC3_Normal = w998I * w998;
	wBC3_Miss = w998L * BattleCalc2(0);

	wBC3_X = (wBC3_3dan +wBC3_DA +wBC3_Cri +wBC3_Normal +wBC3_Miss) /100;

	return tPlusLucky(wBC3_X);
}

function BattleCalc3left(w998){
	
	wBC3L2 = 0;
	for(i=4;i<=7;i++){
		if(cardOBJ[n_A_card[i]][0]==106)
			wBC3L2 += 5;
	}

	wBC3_Normal = w998 * w_HIT /100;
	wBC3_Miss = wBC3L2 * (100-w_HIT) /100;

	wBC3_X = wBC3_Normal + wBC3_Miss;

	wBC3_X = tPlusDamCut(wBC3_X);

	return tPlusLucky(wBC3_X);
}

function BattleCalc4(wBC4,wBC4_2,wBC4_3){ // calcDef & DefIgnore - (rawAtk, (min,avg,max,crit:=10)dmg , left hand--> upgradeatk)
//	if(wBC4_3==0)
//		wBC4_3=n_A_WeaponLV_seirenATK;
//	else
//		wBC4_3=n_A_Weapon2LV_seirenATK;
	if(n_A_ActiveSkill==skill_HW_STAVE_CRASHER)
		return Math.floor(wBC4 * defReduction(n_B[en_HARDDEF])) - n_B_DEF2[0] + wBC4_3;
	if(n_A_ActiveSkill==skill_GS_WOUNDING_SHOT)
		return wBC4 + wBC4_3;
	if(n_tok[bon_IGN_DEF_RC_FORMLESS+n_B[en_RACE]] >= 1)
		return wBC4 + wBC4_3;
	if(n_tok[bon_IGN_DEF_NONBOSS] >= 1 && n_B[en_BOSS] == 0)
		return wBC4 + wBC4_3;
	if(n_tok[bon_IGN_DEF_NONBOSS] >= 10)
		return wBC4 + wBC4_3;
	if(SkillSearch(skill_TKM_UNION))
		return wBC4 + wBC4_3;
	if(n_tok[bon_ICE_PICK] == 0){
		wBC4 = Math.floor(wBC4 * defReduction(n_B[en_HARDDEF])) - n_B_DEF2[0] + wBC4_3;
	}else{
		if(wBC4_2==0){
			wBC4 = Math.floor(wBC4 * (n_B_DEF2[2]+n_B[en_HARDDEF])/200) +wBC4_3;
		}else if(wBC4_2==1){
			wBC4 = Math.floor(wBC4 * (n_B_DEF2[1]+n_B[en_HARDDEF])/200) +wBC4_3;
		}else{
			wBC4 = Math.floor(wBC4 * (n_B_DEF2[0]+n_B[en_HARDDEF])/200) +wBC4_3;
		}
	}
	wBC4 = Max(1,wBC4);
	return wBC4;
}

function BattleCalcEDP(wBCEDP,wBCEDP2){
	if(wBCEDP <= 0)
		return 0;

	if(n_A_ActiveSkill == 19 || n_A_ActiveSkill == 263 || n_A_ActiveSkill == 88 || n_A_ActiveSkill == 264 || n_A_ActiveSkill == 248)
		return 0;
	wBCEDPch=1;
	var x=0;
	var y=0;
	if(SkillSearch(266)){
		x = BattleCalc(wBCEDP,wBCEDP2);
		x = Math.floor((x * zokusei[n_B[en_ELEMENT]][ele_POISON])/4);
	}
	if(n_A_PassSkill2[11]){
		y = BattleCalc(wBCEDP,wBCEDP2);
		y = Math.floor((y * zokusei[n_B[en_ELEMENT]][ele_FIRE]) /5);
	}
	wBCEDPch=0;
	return x + y;
}

function BattleCalc998(){ // Display lower battle results
	if(n_PerHIT_DMG > 0 && w_HIT_HYOUJI < 100){
		str_bSUBname += "<Font size=2>Damage When Missing</Font>";
		if(str_PerHIT_DMG == 0)
			str_bSUB += n_PerHIT_DMG;
		else
			str_bSUB += str_PerHIT_DMG;
	}
	myInnerHtml("bSUBname",str_bSUBname,0);
	myInnerHtml("bSUB",str_bSUB,0);
	myInnerHtml("BattleHIT",w_HIT_HYOUJI,0);

	if(n_B[en_ID]==44 && n_A_ActiveSkill != skill_ALL_BASIC_ATTACK && n_A_ActiveSkill != 325){ // Emp
		for(i=0;i<=2;i++){
			w_DMG[i] = 0;
			myInnerHtml("ATK_0"+i,0,0);
		}
	}

	tPlusAG();
	
	// Min Number of Hits ---------------------------------
	var w;
	w = Math.floor(n_B[en_HP] / w_DMG[2]);
	if(n_B[en_HP] % Math.floor(w_DMG[2]) != 0)
		w += 1;
	if(w<10000)
		myInnerHtml("MinATKnum",w,0);
	else
		myInnerHtml("MinATKnum",SubName[5][Lang],0);

	
	if(SG_Special_HITnum != 0){
		if(w==1){
			var wHITnum;
			var x;
			wHITnum = SG_Special_HITnum;
			x = (SG_Special_DMG[2] * wHITsuu - n_B[en_HP]) / (SG_Special_DMG[2] * wHITsuu - SG_Special_DMG[0] * wHITsuu);
			x = Between(0,x,1);
			if(wHITnum == 2){
				if(x < 0.5)
					x = 2 * x * x;
				else
					x = 1 - 2 * (1-x) * (1-x);
			}
			if(wHITnum == 3){
				if(x < (1/3))
					x = 4.5 * Math.pow(x,3);
				else if((1/3) <= x && x < (2/3))
					x = 4.5 * (Math.pow(x,3) - 3 * Math.pow(x-1/3,3));
				else if((2/3) <= x)
					x = 1 - 4.5 * Math.pow(1-x,3);
			}
			if(wHITnum >= 4){
				var y = Math.sqrt(Math.pow(SG_Special_DMG[2]-SG_Special_DMG[0],2) / 12 * wHITnum);
				x = (SG_Special_DMG[1] * wHITsuu - n_B[en_HP]) / y;
				if(x >= 0)
					x = 0.5+0.5*Math.sqrt(1-Math.exp(-2*Math.pow(x,2)/Math.PI));
				else
					x = 0.5-0.5*Math.sqrt(1-Math.exp(-2*Math.pow(x,2)/Math.PI));
			}
			x = Math.floor(x * 10000) / 100;
			myInnerHtml("MinATKnum","1 ("+ x +"% Chance)",0);
		}
		SG_Special_HITnum = 0;
	}

	// Max Number of Hits ------------------------------------
	if(w_HIT_HYOUJI < 100 && n_PerHIT_DMG == 0){
		myInnerHtml("MaxATKnum","<Font size=2>Infinite (no 100% Hit)</Font>",0);
	}else{
		var wX = w_DMG[0];
		if(w_HIT_HYOUJI < 100)
			wX = n_PerHIT_DMG;
		w = Math.floor(n_B[en_HP] / wX);
		if(n_B[en_HP] % Math.floor(wX) != 0)
			w += 1;
		if(w<10000)
			myInnerHtml("MaxATKnum",w,0);
		else
			myInnerHtml("MaxATKnum",SubName[5][Lang],0);
	}

	w = Math.floor(n_B[en_HP] / w_DMG[1]);
	if(n_B[en_HP] % w_DMG[1] != 0)
		w += 1;
	
	if(Taijin==0){
		if(w<10000){
			myInnerHtml("AtkBaseExp",Math.round(n_B[en_BASEEXP]*expModByLevelDiff(n_A_BaseLV,n_B[en_LEVEL]) / w) +"Exp",0);
			myInnerHtml("AtkJobExp",Math.round(n_B[en_BASEEXP]*expModByLevelDiff(n_A_BaseLV,n_B[en_LEVEL]) / w) +"Exp",0);
		}else{
			myInnerHtml("AtkBaseExp",SubName[7][Lang],0);
			myInnerHtml("AtkJobExp",SubName[7][Lang],0);
		}
	}
	if(w<10000){
		myInnerHtml("AveATKnum",w,0);

		n_AveATKnum = w;

		
		var w2 = (wCast + wDelay) * n_AveATKnum;
		w2 = Math.floor(w2 * 100) / 100;

		if(n_Delay[0])
			myInnerHtml("BattleTime","Special",0);
		else
			myInnerHtml("BattleTime",w2 + "s",0);
	}
	else
	{
		myInnerHtml("AveATKnum",SubName[5][Lang],0);
		myInnerHtml("BattleTime",SubName[6][Lang],0);
	}
	
	var w = 1 / (wCast + wDelay) * w_DMG[1];
	w *= 100;
	w = Math.round(w);
	w /= 100;

	if(n_Delay[0])
		myInnerHtml("AveSecondATK","Special",0);
	else
		myInnerHtml("AveSecondATK",w,0);

	if(Taijin==0)
		calcIncomingDamage();
}

function BattleCalc999(){ // Skills
	w_SkillMod = 1; // SkillMod
	wCast = 0;
	w_VarCast = 0.8;
	w_FixCast = 0.2;
	wHITsuu = 1; // HitCount
	n_Enekyori=0; // Ranged
	wLAch=0;

	w_DMG = [0,0,0];
	not_use_card = 0;
	cast_kotei = 0; // fixed ?

	str_PerHIT_DMG = 0;
	SG_Special_ch = 0;
	for(var i=0;i<=2;i++){
		Last_DMG_A[i] = 0;
		Last_DMG_B[i] = 0;
	}

	str_bSUBname = "";
	str_bSUB = "";
	
	if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK && n_A_ActiveSkill !=272 && n_A_ActiveSkill !=401 && !(n_A_ActiveSkill == 86 && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))){
		myInnerHtml("CRIATK","",0);
		myInnerHtml("CRInum","",0);
		myInnerHtml("CRIATKname","",0);
		myInnerHtml("CRInumname","",0);
	}

	if(n_A_WeaponType==weapTyp_BOW && n_A_ActiveSkill == skill_ALL_BASIC_ATTACK)
		n_Enekyori=1;
	
	if((n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)&& n_A_ActiveSkill == skill_ALL_BASIC_ATTACK)
		n_Enekyori=1;

	
	if(n_A_ActiveSkill == skill_ALL_BASIC_ATTACK || (n_A_ActiveSkill==skill_AS_POISON_REACT && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))){
		myInnerHtml("CRIATKname",SubName[3][Lang],0);
		myInnerHtml("CRInumname",SubName[4][Lang],0);

		if(n_A_ActiveSkill==skill_AS_POISON_REACT)
			n_Delay[0] = 1;
	
		if(n_Nitou){
			TyouEnkakuSousa3dan = 0;

			n_A_workDEX = Math.floor(n_A_DEX * (1 + (n_A_Weapon2LV - 1) * 0.2));

			if(n_A_workDEX>=n_A_Weapon2_ATK)
				w_left_Maxatk = n_A_ATK + n_A_Weapon2LV_Maxplus + Math.floor((n_A_Weapon2_ATK + wImp)* wCSize);
			else
				w_left_Maxatk = n_A_ATK + n_A_Weapon2LV_Maxplus + Math.floor((n_A_Weapon2_ATK-1 + wImp)* wCSize);

			w_left_Maxatk = BattleCalc4(w_left_Maxatk * w_SkillMod,2,1);

			if(w_left_Maxatk<1)w_left_Maxatk=1;
			w_left_Maxatk = Math.floor(w_left_Maxatk * zokusei[n_B[en_ELEMENT]][n_A_Weapon2_zokusei]);

			
			w_left_star = 0;
			if(n_A_card[4]==106 && n_A_card[5]==106 && n_A_card[6]==106){
				w_left_star += 40;
			}else{
				for(i=4;i<=6;i++){
					if(cardOBJ[n_A_card[i]][0]==106)
						w_left_star += 5;
				}
			}
			if(n_A_card[7]==106)
				w_left_star += 10;
			w_left_Maxatk += w_left_star;
			w_left_Maxatk = w_left_Maxatk * (3 + SkillSearch(80)) /10;
			w_left_Maxatk = Math.floor(w_left_Maxatk);


			if(n_A_workDEX > n_A_Weapon2_ATK) 
				n_A_workDEX = n_A_Weapon2_ATK;
			w_left_Minatk = n_A_ATK + n_A_Weapon2LV_Minplus + Math.floor((n_A_workDEX + wImp) * wCSize);
			w_left_Minatk = BattleCalc4(w_left_Minatk * w_SkillMod,0,1);

			if(w_left_Minatk<1)w_left_Minatk=1;
			w_left_Minatk = Math.floor(w_left_Minatk * zokusei[n_B[en_ELEMENT]][n_A_Weapon2_zokusei]/100);
			w_left_Minatk  += w_left_star;
			w_left_Minatk *= (0.3 + SkillSearch(80) /10);
			w_left_Minatk = Math.floor(w_left_Minatk);

			w_left_Aveatk = (w_left_Maxatk + w_left_Minatk) /2;

			w_left_Maxatk = tPlusDamCut(w_left_Maxatk);
			w_left_Minatk = tPlusDamCut(w_left_Minatk);
			w_left_Aveatk = tPlusDamCut(w_left_Aveatk);
			
			ATKbai02(w_SkillMod,0);
			n_Min_DMG += w_left_Minatk;
			n_Max_DMG += w_left_Maxatk;

			
			w_DMG[0] = BattleCalc(n_A_DMG[0],0);
			var wX = w_DMG[0] + EDP_DMG(0);
			Last_DMG_A[0] = Last_DMG_B[0] = wX + w_left_Minatk;
			InnStr[0] += wX +" ("+ w_left_Minatk +")";
			if(w998D){
				str_bSUBname += "Double Attack chance<BR>";
				str_bSUB += (wX *2 + w_left_Minatk) +"~";
			}
			if(wX + w_left_Minatk < n_Min_DMG && w998G < 100)
				n_Min_DMG = wX + w_left_Minatk;
			w_DMG[0] = n_Min_DMG;

			w_DMG[2] = BattleCalc(n_A_DMG[2],2);
			var wX = w_DMG[2] + EDP_DMG(2) + w_left_Maxatk;
			Last_DMG_A[2] = Last_DMG_B[2] = wX + w_left_Maxatk;
			InnStr[2] += w_DMG[2] + EDP_DMG(2) +" ("+ w_left_Maxatk +")";
			if(w998D){
				wX = (w_DMG[2] + EDP_DMG(2)) * 2 + w_left_Maxatk;
				str_bSUB += wX +" ("+ w998D +"%)<BR>";
			}
			if(wX > n_Max_DMG && w998G < 100)
				n_Max_DMG = wX;
			w_DMG[2] = n_Max_DMG;

			w_DMG[1] = BattleCalc(n_A_DMG[1],1);
			var wX = w_DMG[1] + EDP_DMG(1);
			Last_DMG_A[1] = Last_DMG_B[1] = wX + w_left_Aveatk;
			InnStr[1] += wX +" ("+ w_left_Aveatk +")";
			
			w_DMG[1] = BattleCalc3(w_DMG[1]);
			w_DMG[1] += BattleCalc3left(w_left_Aveatk);
			w_DMG[1] += EDP_DMG(1);

			EDPhyouzi(1);

			var wX = BattleCalc2(0);
			var wX2 = Math.floor(w_left_star * (0.3 + SkillSearch(80) /10));
			n_PerHIT_DMG = wX + wX2;
			str_PerHIT_DMG = wX +"+"+ wX2;

			CastAndDelay();
			BattleCalc998();
		}
		else{
			n_TAKA_DMG=0;
			wTAKA = BattleTAKA();
			TyouEnkakuSousa3dan = 0;

			if(SkillSearch(skill_MO_TRIPLE_STRIKE)){
				TyouEnkakuSousa3dan = -1;
				wBC3_3danAtkBairitu = SkillSearch(skill_MO_TRIPLE_STRIKE) * 0.2;
				var san = [0,0,0];
				for(var i=0;i<=2;i++){
					san[i] = BattleCalc(n_A_DMG[i] * (w_SkillMod + wBC3_3danAtkBairitu),i) + EDP_DMG(i);
					san[i] = Math.floor(san[i] /3) *3;
					if(n_B[en_BOSS] == 5)
						san[i] = 3;
				}
				str_bSUBname += "Raging Trifecta Blow Damage<BR>";
				str_bSUB += san[0] +"~"+ san[2] +" ("+ (30 - SkillSearch(skill_MO_TRIPLE_STRIKE)) +"% Chance)<BR>";
				TyouEnkakuSousa3dan = 0;
				if(n_Min_DMG > san[0])
					n_Min_DMG = san[0];
				if(n_Max_DMG < san[2])
					n_Max_DMG = san[2];
			}

			ATKbai02(w_SkillMod,0);
			for(var i=0;i<=2;i++)
				w_DMG[i] = BattleCalc(n_A_DMG[i],i); // + mastery & nevermiss

			var w_KATARU = [0,0,0];
			var w_Ave_KATARU = 0;
			if(n_A_WeaponType == 11){
				for(i=0;i<=2;i++)
					w_KATARU[i] = Math.floor((w_DMG[i] + EDP_DMG(i)) * (0.01 + SkillSearch(13) * 0.02));
				w_Ave_KATARU = Math.floor(w_DMG[1] * (0.01 + SkillSearch(13) * 0.02));
			}

			Last_DMG_B[0] = w_DMG[0] + EDP_DMG(0);
			Last_DMG_A[0] = Last_DMG_B[0] + w_KATARU[0];
			InnStr[0] += Last_DMG_A[0];
			if(n_A_WeaponType == 11)
				InnStr[0] = Last_DMG_A[0] +" ("+ Last_DMG_B[0] +"+"+ w_KATARU[0] +")";
			if(Last_DMG_A[0] < n_Min_DMG && w998G < 100)
				n_Min_DMG = Last_DMG_A[0];
			if(w998D){
				if(n_A_WeaponType == 17 && SkillSearch(427)){
					if(CardNumSearch(43) || EquipNumSearch(570))
						str_bSUBname += "Double attack chance<BR>";
					else
						str_bSUBname += "Chain action chance<BR>";
				}else
					str_bSUBname += "Double attack chance<BR>";
				str_bSUB += Last_DMG_A[0] * 2 +"~";
			}
			w_DMG[0] = n_Min_DMG;

			Last_DMG_B[2] = w_DMG[2] + EDP_DMG(2);
			Last_DMG_A[2] = Last_DMG_B[2] + w_KATARU[2];
			InnStr[2] += Last_DMG_A[2];
			if(n_A_WeaponType == 11)
				InnStr[2] = Last_DMG_A[2] +" ("+ Last_DMG_B[2] +"+"+ w_KATARU[2] +")";
			n_Max_DMG += n_TAKA_DMG;
			var wX = Last_DMG_A[2];
			wX += n_TAKA_DMG;
			if(n_Max_DMG < wX && w998G < 100)
				n_Max_DMG = wX;
			if(w998D){
				var wX = (w_DMG[2] + EDP_DMG(2) + w_KATARU[2]) *2;
				str_bSUB += wX +" ("+ w998D +"%)<BR>";
				wX += n_TAKA_DMG;
				if(n_Max_DMG < wX)
					n_Max_DMG = wX;
			}
			w_DMG[2] = n_Max_DMG;

			Last_DMG_B[1] = w_DMG[1] + EDP_DMG(1);
			Last_DMG_A[1] = Last_DMG_B[1] + w_KATARU[1];
			InnStr[1] += Last_DMG_A[1];
			if(n_A_WeaponType == 11)
				InnStr[1] = Last_DMG_A[1] +" ("+ Last_DMG_B[1] +"+"+ w_KATARU[1] +")";
			if(SkillSearch(187))
				TyouEnkakuSousa3dan = san[1];
			
			w_DMG[1] += w_Ave_KATARU;
			w_DMG[1] = BattleCalc3(w_DMG[1]);
			w_DMG[1] += wTAKA;
			w_DMG[1] += EDP_DMG(1);

			EDPhyouzi(1);

			CastAndDelay();
			BattleCalc998();
		}
		return;
	}
	else if(n_A_ActiveSkill==skill_SN_SHARP_SHOOTING || n_A_ActiveSkill==skill_NIN_SHADOW_SLASH){
		myInnerHtml("CRIATKname","Critical Hit",0);
		myInnerHtml("CRInumname","Critical Attack chance",0);

		if(n_A_ActiveSkill==skill_SN_SHARP_SHOOTING){
			n_Enekyori=1;
			w_SkillMod += (1 + 0.5 * n_A_ActiveSkillLV);
			wCast = 2 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
			n_Delay[2] = 1.5;
		}else{
			n_Delay[0] = 1;
			n_Enekyori=0;
			w_SkillMod += (n_A_ActiveSkillLV -1);
		}
		 // Crit Part -----------------------------
		for(i=0;i<=2;i++)
			n_A_CriATK[i] = n_A_DMG[i];

		ATKbai02(w_SkillMod,1);

		wCriTyuu=1;
		for(var i=0;i<=2;i++)
			n_A_CriATK[i] = BattleCalc(n_A_CriATK[i],10);
		wCriTyuu=0;
		
		for(var i=0;i<=2;i++)
			n_A_CriATK[i] += EDP_DMG(i);

		if(w998G >= 100)
			n_Min_DMG = n_A_CriATK[0];
		if(w998G > 0)
			n_Max_DMG = n_A_CriATK[2];
		myInnerHtml("CRIATK",n_A_CriATK[0] +"~"+ n_A_CriATK[2],0);

		// NonCrit Part -------------------------
		ATKbai02(w_SkillMod,0);

		for(var i=0;i<=2;i++){
			w_DMG[i] = BattleCalc(n_A_DMG[i],i);
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] + EDP_DMG(i);
			InnStr[i] += Last_DMG_A[i];
		}

		if(w998G >= 100)
			w_DMG[0] = n_Min_DMG;
		if(w998G > 0)
			w_DMG[2] = n_Max_DMG;

		w_DMG[1] = BattleCalc3(w_DMG[1]);

		EDPplus(1);

		CastAndDelay();
		BattleCalc998();
		return;
	}

// Physical normal single-hit-calc skills (?)
	w_ActS=[skill_SW_BASH,skill_SW_MAGNUM_BREAK,skill_TH_SAND_ATTACK,skill_AR_ARROW_SHOWER,skill_AR_ARROW_REPEL,skill_ME_MAMMONITE,skill_KN_SPEAR_STAB,skill_KN_SPEAR_BOOMERANG,skill_KN_BRANDISH_SPEAR,skill_AS_SONIC_BLOW,skill_AS_GRIMTOOTH,skill_HU_FREEZING_TRAP,skill_CR_SMITE,skill_CR_HOLY_CROSS,skill_RG_BACK_STAB,skill_RG_SIGHTLESS_MIND,skill_RG_GANK,skill_MO_RAGING_QUADRUPLE_BLOW,skill_MO_RAGING_THRUST,skill_BA_MELODY_STRIKE,skill_DA_SLINGING_ARROW,skill_AL_BOMB,skill_LK_TRAUMATIC_BLOW,skill_LK_VITAL_STRIKE,skill_AX_METEOR_ASSAULT,skill_CH_RAGING_PALM_STRIKE,skill_CH_GLACIER_FIST,skill_CH_CHAIN_CRUSH_COMBO,skill_CG_ARROW_VULCAN,skill_ALL_TOMAHAWK_THROWING,skill_MON_PULSE_STRIKE,skill_TKK_FLYING_KICK_SPRINT,skill_AS_VENOM_KNIFE,skill_HU_FANTASTIC_ARROW,skill_KN_CHARGE_ATTACK,skill_MS_HIGH_SPEED_CART_RAM,skill_HEAT,skill_HEAT_WALL,skill_TK_TORNADO_KICK,skill_TK_HEEL_DROP,skill_TK_ROUNDOUSE,skill_TK_COUNTER_KICK,skill_TK_FLYING_KICK,skill_MO_EXCRUCIATING_PALM,skill_AS_SONIC_BLOW_SL,skill_NIN_FLIP_TATAMI,skill_NIN_HAZE_SLASHER,skill_GS_BULLS_EYE,skill_GS_MAGICAL_BULLET,skill_GS_TRIGGER_HAPPY_SHOT,skill_GS_TRACKING,skill_GS_DISARM,skill_GS_WOUNDING_SHOT,skill_GS_CROWD_CONTROL_SHOT,skill_GS_FULL_BLAST,skill_GS_SPREAD_SHOT,skill_GS_GUNSLINGER_MINE,"NULL"];
	for(iw=0;w_ActS[iw] != n_A_ActiveSkill && w_ActS[iw] != "NULL";iw++);
	if(n_A_ActiveSkill==w_ActS[iw]){
		wActiveHitNum = 1;
		if(n_A_ActiveSkill==skill_SW_BASH)
			w_SkillMod += n_A_ActiveSkillLV *0.3;
		else if(n_A_ActiveSkill==skill_SW_MAGNUM_BREAK){
			w_SkillMod += n_A_ActiveSkillLV *0.2;
			n_A_Weapon_zokusei = ele_FIRE;
			n_Delay[2] = 2;
		}else if(n_A_ActiveSkill==skill_TH_SAND_ATTACK){
			not_use_card = 1;
			w_SkillMod += 0.3;
			n_A_Weapon_zokusei = ele_EARTH;
		}else if(n_A_ActiveSkill==skill_AR_ARROW_SHOWER){
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV *0.05 - 0.25; // update to RE !
			n_Delay[2] = 1;
		}else if(n_A_ActiveSkill==skill_AR_ARROW_REPEL){
			n_Enekyori=1;
			wCast = 1.5;
			w_SkillMod += 0.5;
		}else if(n_A_ActiveSkill==skill_ME_MAMMONITE)
			w_SkillMod += n_A_ActiveSkillLV *0.5;
		else if(n_A_ActiveSkill==skill_KN_SPEAR_STAB){
			w_SkillMod += n_A_ActiveSkillLV *0.2;
			n_Enekyori=1;
		}else if(n_A_ActiveSkill==skill_AS_GRIMTOOTH){
			if(n_A_ActiveSkillLV >= 3)
				n_Enekyori=1;
			w_SkillMod += 0.2 * n_A_ActiveSkillLV;
		}else if(n_A_ActiveSkill==skill_CR_SMITE){
			w_SkillMod += n_A_ActiveSkillLV *0.2;
		}else if(n_A_ActiveSkill==skill_CR_HOLY_CROSS){
			w_SkillMod += n_A_ActiveSkillLV *0.35;
			n_A_Weapon_zokusei = ele_HOLY;
		}else if(n_A_ActiveSkill==skill_RG_SIGHTLESS_MIND)
			w_SkillMod += n_A_ActiveSkillLV *0.4;
		else if(n_A_ActiveSkill==skill_KN_SPEAR_BOOMERANG){
			w_SkillMod += n_A_ActiveSkillLV *0.5;
			n_Delay[2] = 1;
			n_Enekyori=1;
		}else if(n_A_ActiveSkill==skill_KN_BRANDISH_SPEAR){
			w = (1+n_A_ActiveSkillLV*0.2);
			if(n_A_ActiveSkillLV == 10)w_SkillMod += 4.625;
			else if(n_A_ActiveSkillLV >= 7)w_SkillMod += w+w/2+w/4-1;
			else if(n_A_ActiveSkillLV >= 4)w_SkillMod += w+w/2-1;
			else w_SkillMod += w-1;
			wCast = 0.7;
		}else if(n_A_ActiveSkill==skill_AS_SONIC_BLOW || n_A_ActiveSkill==skill_AS_SONIC_BLOW_SL){

			wActiveHitNum = 8;
			w_SkillMod += n_A_ActiveSkillLV *0.5 + 2;
			if(n_A_ActiveSkill==skill_AS_SONIC_BLOW_SL && Taijin==0)
				w_SkillMod *= 2;
			if(n_A_ActiveSkill==skill_AS_SONIC_BLOW_SL && Taijin==1){
				if(n_Ses) // WoE
					w_SkillMod *= 1.25;
				else
					w_SkillMod *= 2;
			}
//			if(n_A_ActiveSkill==skill_AS_SONIC_BLOW_SL && n_Ses==0)
//				n_Delay[3] = 1;

//			else
				n_Delay[3] = 2;
		}else if(n_A_ActiveSkill==skill_HU_FREEZING_TRAP){
			n_Delay[0] = 1;
			not_use_card = 1;
			n_A_Weapon_zokusei = ele_WATER;
		}else if(n_A_ActiveSkill==skill_RG_BACK_STAB){

			w_SkillMod += n_A_ActiveSkillLV *0.4 + 2;
			n_Delay[2] = 0.5;
			w_HIT = 100;
			w_HIT_HYOUJI = 100;
		}else if(n_A_ActiveSkill==skill_RG_GANK){
			w_SkillMod += n_A_ActiveSkillLV * 0.3;
			n_Delay[2] = 1;
		}else if(n_A_ActiveSkill==skill_MO_RAGING_QUADRUPLE_BLOW){
			wActiveHitNum = 4;
			w_SkillMod += 0.5+n_A_ActiveSkillLV *0.5;
			n_Delay[0] = 1;
			n_Delay[1] = 0.1;
			n_Delay[3] = 1 - (0.004 * n_A_AGI) - (0.002 * n_A_DEX);
		}else if(n_A_ActiveSkill==skill_MO_RAGING_THRUST){
			w_SkillMod += 1.4+n_A_ActiveSkillLV *0.6;
			n_Delay[0] = 1;
			n_Delay[1] = 0.1;
			n_Delay[3] = 0.7 - (0.004 * n_A_AGI) - (0.002 * n_A_DEX);
		}else if(n_A_ActiveSkill==skill_BA_MELODY_STRIKE||n_A_ActiveSkill==skill_DA_SLINGING_ARROW){
			wCast = 1.5;
			w_SkillMod += (n_A_ActiveSkillLV * 0.4 - 0.4);
			n_A_Weapon_zokusei = ArrowOBJ[n_A_Arrow][1];
			if(eval(document.calcForm.A_Weapon_zokusei.value) != 0)
				n_A_Weapon_zokusei = eval(document.calcForm.A_Weapon_zokusei.value);
			n_Enekyori=1;
		}else if(n_A_ActiveSkill==skill_AL_BOMB){
			not_use_card = 1;
			n_A_Weapon_zokusei = ele_FIRE;
			n_Delay[0] = 1;
			wCast = 1;
			w_SkillMod += n_A_ActiveSkillLV *0.2;
			w_HIT = 100;
			w_HIT_HYOUJI = 100;
		}else if(n_A_ActiveSkill==skill_LK_TRAUMATIC_BLOW){
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV *0.4;
			n_Delay[2] = 0.5;
		}else if(n_A_ActiveSkill==skill_LK_VITAL_STRIKE){
			n_Enekyori=1;
			w_SkillMod += (n_A_ActiveSkillLV *0.1 -0.5);
			if(n_A_ActiveSkillLV > 5)
				n_Delay[2] = 1;
			else
				n_Delay[2] = 0.8;
		}else if(n_A_ActiveSkill==skill_AX_METEOR_ASSAULT){
			not_use_card = 1;
			w_SkillMod += (n_A_ActiveSkillLV *0.4 -0.6);
			wCast = 0.5;
			n_Delay[2] = 0.5;
		}else if(n_A_ActiveSkill==skill_CH_RAGING_PALM_STRIKE){
			w_SkillMod += (1 + n_A_ActiveSkillLV);
			n_Delay[2] = 0.3;
		}else if(n_A_ActiveSkill==skill_CH_GLACIER_FIST){
			n_Delay[0] = 1;
			w_SkillMod += n_A_ActiveSkillLV -0.6;
			n_Delay[1] = 0.1;
			n_Delay[3] = 0.7 - (0.004 * n_A_AGI) - (0.002 * n_A_DEX);
		}else if(n_A_ActiveSkill==skill_CH_CHAIN_CRUSH_COMBO){
			n_Delay[0] = 1;
			w_SkillMod += (3 + n_A_ActiveSkillLV);
			if(n_A_ActiveSkillLV>6) n_Delay[2]=1;
			else n_Delay[2]=0.8;
		}else if(n_A_ActiveSkill==skill_CG_ARROW_VULCAN){
			wActiveHitNum = 9;
			w_SkillMod += 1 + n_A_ActiveSkillLV;
			n_A_Weapon_zokusei = ArrowOBJ[n_A_Arrow][1];
			if(eval(document.calcForm.A_Weapon_zokusei.value) != 0)
				n_A_Weapon_zokusei = eval(document.calcForm.A_Weapon_zokusei.value);
			n_Enekyori=1;
			wCast = 1.8 + n_A_ActiveSkillLV *0.2;
			if(n_A_ActiveSkillLV>=6) n_Delay[2]=1;
			else n_Delay[2]=0.8;
			n_Delay[3]=3;
		}else if(n_A_ActiveSkill==skill_ALL_TOMAHAWK_THROWING){
			n_Enekyori=1;
			not_use_card = 1;
			n_A_Weapon_zokusei = ele_WIND;
		}else if(n_A_ActiveSkill==skill_MON_PULSE_STRIKE){
			w_SkillMod += (n_A_ActiveSkillLV -1) * 1;
		}else if(n_A_ActiveSkill==skill_AS_VENOM_KNIFE){
			n_Enekyori=1;
			not_use_card = 1;
			n_A_DMG[1] += Math.floor(14.5 * wCSize);
			n_A_DMG[2] += Math.floor(29 * wCSize);
		}else if(n_A_ActiveSkill==skill_HU_FANTASTIC_ARROW){
			n_Enekyori=1;
			not_use_card = 1;
			w_SkillMod += 0.5;
		}else if(n_A_ActiveSkill==skill_KN_CHARGE_ATTACK){
			var w;
			w = eval(document.calcForm.SkillSubNum.value);
			w_SkillMod += w;
			wCast = 0.5 * (w+1);
			if(wCast > 1.5)
				wCast = 1.5;
		}else if(n_A_ActiveSkill==skill_HEAT || n_A_ActiveSkill==skill_HEAT_WALL){
			if(n_A_ActiveSkill==skill_HEAT)
				n_Delay[0] = 1;
			n_Delay[5] = 0.05;
			if(n_B[en_BOSS]==1)
				n_Delay[5] = 0.1;
			if(Taijin==1){
				if(n_A_ActiveSkill==skill_HEAT_WALL)
					n_Delay[0] = 1;
				str_bSUBname += "<Font size=2>SP damage</Font><BR>";
				str_bSUB += "15<BR>";
			}
		}else if(n_A_ActiveSkill==skill_MS_HIGH_SPEED_CART_RAM){
			not_use_card = 1;
			w_SkillMod += Math.floor((eval(document.calcForm.SkillSubNum.value) / (16 - n_A_ActiveSkillLV) / 100 -1) * 100) /100;
		}else if(n_A_ActiveSkill==skill_MO_EXCRUCIATING_PALM){
			not_use_card = 1;
			w_SkillMod += 2;
		}else if(n_A_ActiveSkill==skill_TK_TORNADO_KICK || n_A_ActiveSkill==skill_TK_HEEL_DROP){
			n_Delay[0] = 1;
			w_SkillMod += (0.6 + n_A_ActiveSkillLV * 0.2);
		}else if(n_A_ActiveSkill==skill_TK_ROUNDOUSE || n_A_ActiveSkill==skill_TK_COUNTER_KICK){
			n_Delay[0] = 1;
			w_SkillMod += (0.9 + n_A_ActiveSkillLV * 0.3);
			if(n_A_ActiveSkill==skill_TK_COUNTER_KICK)
				wActiveHitNum = 3;
		}else if(n_A_ActiveSkill==skill_TK_FLYING_KICK){
			n_Delay[0] = 1;
			w_SkillMod += (-0.7 + n_A_ActiveSkillLV * 0.1);
		}else if(n_A_ActiveSkill==skill_TKK_FLYING_KICK_SPRINT){
			n_Delay[0] = 1;
			if(SkillSearch(skill_TK_SPRINT_STR_STATE) && n_A_WeaponType==0)
				w_SkillMod += (n_A_BaseLV * 0.08 - 1);
			else
				w_SkillMod += (n_A_BaseLV * 0.04 - 1);
		}else if(n_A_ActiveSkill==skill_NIN_FLIP_TATAMI){
			w_SkillMod += (n_A_ActiveSkillLV * 0.1);
			n_Delay[2] = 3;
		}else if(n_A_ActiveSkill==skill_NIN_HAZE_SLASHER){
			n_Delay[0] = 1;
			w_SkillMod += (n_A_ActiveSkillLV * 0.1);
			n_Delay[2] = 1;
		}else if(n_A_ActiveSkill==skill_GS_BULLS_EYE){
			not_use_card = 1;
			wCast = 0.5;
			n_Delay[2] = 1;
			n_Enekyori=1;
			wActiveHitNum = 5;
			if(n_B[en_RACE] == 2 || n_B[en_RACE] == 7)
				w_SkillMod += 4;
		}else if(n_A_ActiveSkill==skill_GS_MAGICAL_BULLET){
			n_Enekyori=1;
			n_Delay[2] = 0.5;
			n_A_Weapon_zokusei = ele_GHOST;
			not_use_card = 1;
		}else if(n_A_ActiveSkill==skill_GS_TRIGGER_HAPPY_SHOT){
			n_Enekyori=1;
			wActiveHitNum = 5;
			w_SkillMod += n_A_ActiveSkillLV *0.5 + 4;
			n_Delay[2] = 1.7;
		}else if(n_A_ActiveSkill==skill_GS_TRACKING){
			wCast = 1 + 0.2 * n_A_ActiveSkillLV;
			cast_kotei = 1;
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV *1 +1;
			n_Delay[2] = 1;
			w_HIT = w_HIT * 5 +5;
			if(w_HIT > 100)
				w_HIT = 100;
			w_HIT_HYOUJI = w_HIT;
		}else if(n_A_ActiveSkill==skill_GS_DISARM){
			wCast = 2;
			n_Delay[2] = 1;
			n_Enekyori=1;
		}else if(n_A_ActiveSkill==skill_GS_WOUNDING_SHOT){
			wCast = 1.5;
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV *0.2;
			n_Delay[2] = 0.5;
			w_HIT = 100;
			w_HIT_HYOUJI = 100;
		}else if(n_A_ActiveSkill==skill_GS_CROWD_CONTROL_SHOT){
			cast_kotei = 1;
			wCast = 1;
			n_Enekyori=0;
			w_SkillMod += n_A_ActiveSkillLV *0.5;
			n_Delay[3] = 1;
		}else if(n_A_ActiveSkill==skill_GS_FULL_BLAST){
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV * 1 + 2;
			n_Delay[2] = 1 + n_A_ActiveSkillLV *0.2;
		}else if(n_A_ActiveSkill==436){
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV * 0.2 - 0.2;
			wCast = 1;
			n_Delay[2] = 1;
		}else if(n_A_ActiveSkill==skill_GS_GUNSLINGER_MINE){
			n_Enekyori=1;
			not_use_card = 1;
			wCast = 1;
			n_Delay[2] = 1;
		}

		ATKbai02(w_SkillMod,0);

		if(cast_kotei == 0)
			wCast = wCast * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);

		for(var i=0;i<=2;i++){
			w_MagiclBulet = i;
			w_DMG[i] = BattleCalc(n_A_DMG[i],i);
			if(wActiveHitNum > 1)
				w_DMG[i] = Math.floor(w_DMG[i] / wActiveHitNum) * wActiveHitNum;
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] + EDP_DMG(i);
			InnStr[i] += Last_DMG_A[i];
			if(wActiveHitNum > 1)
				InnStr[i] += " ("+ (w_DMG[i] / wActiveHitNum) +" x "+ wActiveHitNum +"Hit)";
		}
		w_MagiclBulet = 1;
		w_DMG[1] = (w_DMG[1] * w_HIT + BattleCalc2(0) *(100-w_HIT))/100;

		EDPplus(1);

		if(cast_kotei == 0)
			CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_HW_STAVE_CRASHER){
		n_Enekyori=1;
		wCast = 0.3;
		n_Delay[2] = 0.3;
		wCast = wCast * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);

		for(var i=0;i<=2;i++){
			w_DMG[i] = BattleCalc(BK_n_A_MATK[i],i);
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] + EDP_DMG(i);
			InnStr[i] += Last_DMG_A[i];
		}
		n_PerHIT_DMG = BattleCalc2(0)+n_A_WeaponLV_seirenATK;
		w_DMG[1] = (w_DMG[1] * w_HIT + n_PerHIT_DMG *(100-w_HIT))/100;

		EDPplus(1);

		CastAndDelay();
		BattleCalc998();

// Physical normal attacks with subhits ----------------------------
	}else if(n_A_ActiveSkill==skill_AR_DOUBLE_STRAFE||n_A_ActiveSkill==skill_KN_PIERCE||n_A_ActiveSkill==skill_HU_FREEZING_TRAP||n_A_ActiveSkill==skill_MO_THROW_SPIRIT_SPHERES||n_A_ActiveSkill==skill_KN_BOWLING_BASH||n_A_ActiveSkill==skill_GS_TRIPLE_ACTION||n_A_ActiveSkill==skill_HU_BEAST_STRAFING||n_A_ActiveSkill==skill_GS_DESPERADO){
		if(n_A_ActiveSkill==skill_AR_DOUBLE_STRAFE){
			n_Enekyori=1;
			w_SkillMod += n_A_ActiveSkillLV *0.1 -0.1;
			wHITsuu = 2;
		}else if(n_A_ActiveSkill==skill_KN_PIERCE){
			w_SkillMod += n_A_ActiveSkillLV *0.1;
			wHITsuu = n_B[en_SIZE]+1;
		}else if(n_A_ActiveSkill==skill_KN_BOWLING_BASH){
			w_SkillMod += n_A_ActiveSkillLV *0.4;
			wCast = 0.7 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
			wHITsuu = 2;
			if(n_A_ActiveSkillLV == 1)
				wHITsuu = 1;
			wLAch=1;
			if(n_B_IJYOU[6] == 1) // LexA
				wHITsuu += 1;
		}else if(n_A_ActiveSkill==skill_MO_THROW_SPIRIT_SPHERES){
			w_SkillMod += n_A_ActiveSkillLV *0.5;
			if(n_A_JobSearch2()==15)
				w = SkillSearch(skill_MO_SPHERE);
			else
				w = n_A_PassSkill2[pass_II_SPHERES];
				
			w = Min(n_A_ActiveSkillLV,w);
			
			wHITsuu = w;
			wCast = (1 + w) * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
			n_Delay[2] = 0.5;
			n_Enekyori=1;
		}else if(n_A_ActiveSkill==418){
			n_Enekyori=1;
			n_Delay[2] = 1;
			w_SkillMod += 0.5;
			wHITsuu = 3;
		}else if(n_A_ActiveSkill==391){
			n_Delay[0] = 1;
			n_Enekyori=1;
			w_SkillMod += n_A_STR *0.08 - 0.5;
			wHITsuu = 2;
		}else if(n_A_ActiveSkill==429){
			n_Enekyori=0;
			w_SkillMod += n_A_ActiveSkillLV *0.5 - 0.5;
			n_Delay[2] = 1;
			var DEATH = [1,1.2,1.6,2,2.4,3,3.6,4,5,6,7,8,9,10];
			wHITsuu = DEATH[eval(document.calcForm.SkillSubNum.value)];
		}
		ATKbai02(w_SkillMod,0);
		
		for(var i=0;i<=2;i++){
			w_DMG[i] = BattleCalc(n_A_DMG[i],i);

			if(n_A_ActiveSkill==391 && n_B[en_RACE]!=2 && n_B[en_RACE]!=4)
				w_DMG[i] = 0;
			w_DMG[i] += EDP_DMG(i);
			Last_DMG_B[i] = w_DMG[i];
			if(n_A_ActiveSkill==76)
				Last_DMG_B[i] = w_DMG[i] * 2;
			Last_DMG_A[i] = w_DMG[i] * wHITsuu;
			if(n_B_IJYOU[6] == 0 || wLAch==0)
				InnStr[i] += Math.floor(w_DMG[i] * wHITsuu) + " ("+ w_DMG[i] + SubName[8][Lang] +wHITsuu+"hit)";
			else{
				InnStr[i] += w_DMG[i] * 3 +"("+ w_DMG[i] * 2 +"+"+ w_DMG[i] +")";
				Last_DMG_B[i] = w_DMG[i] * 3;
			}
			w_DMG[i] -= EDP_DMG(i);
			w_DMG[i] *= wHITsuu;
		}
		var wX = BattleCalc2(0);
		w_DMG[1] = (w_DMG[1] * w_HIT + wX * wHITsuu *(100-w_HIT))/100;

		if(wHITsuu == 0 && n_A_ActiveSkill==skill_MO_THROW_SPIRIT_SPHERES){
			InnStr[0] = "<Font color=Red><B>No spheres available</B></Font><BR>" + InnStr[0];
//			InnStr[1] += "<BR><Font color=Red><B>No Sphere available</B></Font>";
			InnStr[2] += "<BR><Font color=Red><B>No spheres available</B></Font>";
		}
		EDPplus(wHITsuu);

		n_PerHIT_DMG = 0; //wX * wHITsuu;
		str_PerHIT_DMG = wX * wHITsuu +" ("+ wHITsuu + SubName[8][Lang] + wX +" Damage)";

		CastAndDelay();
		BattleCalc998();

// Physical but special formula skills --------------------------
	}else if(n_A_ActiveSkill==skill_HU_BLITZ_BEAT || n_A_ActiveSkill==skill_SN_FALCON_ASSAULT){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		n_Enekyori=1;
		wBT = 80 + Math.floor(n_A_DEX /10)*2 + Math.floor(n_A_INT/2)*2 + SkillSearch(skill_HU_STEEL_CROW) *6;
		if(n_A_ActiveSkill==skill_SN_FALCON_ASSAULT){
			wBT = Math.floor(wBT * (150 + 70 * n_A_ActiveSkillLV) /100);
			wBT = Math.floor(wBT * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			wBT = tPlusDamCut(wBT);
			wBT *= 5;
			if(n_B[en_BOSS] == 5)
				wBT = 1;
			wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
			n_Delay[2] = 3;
		}else{
			wBT = Math.floor(wBT * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			wBT = tPlusDamCut(wBT);
			wBT *= n_A_ActiveSkillLV;
			wCast = 1.5 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
			n_Delay[2] = 1;
		}
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = wBT;
			InnStr[i] += Last_DMG_A[i];
			if(n_A_ActiveSkill==skill_HU_BLITZ_BEAT){
				Last_DMG_B[i] = wBT / n_A_ActiveSkillLV;
				InnStr[i] += " ("+ Last_DMG_B[i] +" x "+ n_A_ActiveSkillLV +"Hit)";
			}
			w_DMG[i] = wBT;
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_TH_ENVENOM || (n_A_ActiveSkill==skill_AS_POISON_REACT && (n_B[en_ELEMENT] < 50 ||  60 <= n_B[en_ELEMENT]))){
		n_A_Weapon_zokusei = ele_POISON;
	
		ATKbai02(w_SkillMod,0);
		
		wINV = Math.floor(BattleCalc2(0) * zokusei[n_B[en_ELEMENT]][ele_POISON]/100);
		n_PerHIT_DMG = wINV;

		for(var i=0;i<=2;i++){
			w_DMG[i] = BattleCalc(n_A_DMG[i],i);
			w_DMG[i] = Math.floor(w_DMG[i] * zokusei[n_B[en_ELEMENT]][ele_POISON]/100);
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] + EDP_DMG(i);
			InnStr[i] += Last_DMG_A[i];
		}
		w_DMG[1] = (w_DMG[1] * w_HIT + wINV *(100-w_HIT))/100;

		EDPplus(1);


		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_CR_SHIELD_BOOMERANG || n_A_ActiveSkill==skill_CR_SHIELD_BOOMERANG_SL){
		n_PerHIT_DMG = 0;
		n_Enekyori=1;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		n_Delay[2] = 0.7;
		if(n_A_ActiveSkill==skill_CR_SHIELD_BOOMERANG_SL)
			n_Delay[2] = 0.35;
		wSBr = n_A_LEFT_DEF_PLUS *4;

		wbairitu2 = (1 + n_A_ActiveSkillLV *0.3);
		if(n_A_ActiveSkill==skill_CR_SHIELD_BOOMERANG_SL)
			wbairitu2 *= 2;

		n_A_ATK_w = Math.round(Math.floor(n_A_STR/10) * Math.floor(n_A_STR/10));
		n_A_ATK   = n_A_STR + n_A_ATK_w + Math.floor(n_A_DEX / 5) + Math.floor(n_A_LUK / 5);

		for(var i=0;i<=2;i++){
			w_DMG[i] = n_A_ATK * w_SkillMod + ItemOBJ[n_A_Equip[eq_SHIELD]][itm_WEIGHT] + wSBr;
			w_DMG[i] = Math.floor(Math.floor(w_DMG[i] * defReduction(n_B[en_HARDDEF]) - n_B_DEF2[i]) * wbairitu2);
			w_DMG[i] = BaiCI(w_DMG[i]);
			if(w_DMG[i] < 1)w_DMG[i] = 1;
			w_DMG[i] = Math.floor(w_DMG[i] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_DMG[1] = (w_DMG[1] * w_HIT)/100;

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_PA_RAPID_SMITING){
		n_PerHIT_DMG = 0;
		n_Enekyori=1;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 1;
		wSBr = n_A_LEFT_DEF_PLUS;
		wSC  = ItemOBJ[n_A_Equip[eq_SHIELD]][itm_WEIGHT];

		wbairitu2 = (1 + n_A_ActiveSkillLV *0.3);

		n_A_ATK_w = Math.round(Math.floor(n_A_STR/10) * Math.floor(n_A_STR/10));
		n_A_ATK   = n_A_STR + n_A_ATK_w + Math.floor(n_A_DEX / 5) + Math.floor(n_A_LUK / 5);
		n_A_ATK   = n_A_ATK * w_SkillMod + wSC + wSBr * 4;

		wSC -= 100;
		wSC = Max(wSC,0);
		wSC2 = [0,0,0];
		wSC2[2] = 100 + wSC + (wSBr * 2) * wSBr;
		wSC2[1] = 100 + (wSC + (wSBr * 2) * wSBr)/2;
		wSC2[0] = 100

		for(var i=0;i<=2;i++){
			w_DMG[i] = (n_A_ATK * defReduction(n_B[en_HARDDEF]) - n_B_DEF2[i]) * wbairitu2;
			w_DMG[i] += wSC2[i];
			w_DMG[i] = BaiCI(w_DMG[i]);
			if(w_DMG[i] < 1)w_DMG[i] = 1;
			w_DMG[i] = Math.floor(w_DMG[i] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[i] = w_DMG[i] * 5;
			Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i] +" ("+ Last_DMG_B[i] + SubName[8][Lang] +"5hit)";
			w_DMG[i] = Last_DMG_A[i];
		}
		w_DMG[1] = (w_DMG[1] * w_HIT)/100;

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_LK_CLASHING_SPIRAL){
		n_Enekyori=1;

		wSPP2 = n_A_WeaponLV_seirenATK * zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei]/100;
		wSPP2 = BaiCI(wSPP2);
		wSPP2 = tPlusDamCut(wSPP2);
		n_PerHIT_DMG = wSPP2 * 5;

		if(n_A_ActiveSkillLV == 5)
			wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		else
			wCast = (0.1 + 0.2 * n_A_ActiveSkillLV) * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 1+ 0.2 * n_A_ActiveSkillLV;

		wSPP = Math.floor(n_A_STR / 10);
		w_DMG[2] = wSPP * wSPP + ItemOBJ[n_A_Equip[0]][6] * 0.8 * (1 + 0.5 * n_A_ActiveSkillLV);
		wSPP = 1.25 -(n_B[en_SIZE] * 0.25);
		w_DMG[2] = Math.floor(w_DMG[2] * wSPP + n_A_WeaponLV_seirenATK);
		w_DMG[2] = w_DMG[2] * zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei]/100;
		w_DMG[2] = BaiCI(w_DMG[2]);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_B[i] = w_DMG[i] + EDP_DMG(i);
			Last_DMG_A[i] = Last_DMG_B[i] * 5;
			InnStr[i] += Last_DMG_A[i] + " ("+ Last_DMG_B[i] + SubName[8][Lang] +"5hit)";
			w_DMG[i] = Last_DMG_A[i];
		}
		w_DMG[1] = w_DMG[1] * w_HIT /100 + n_PerHIT_DMG * (100- w_HIT)/100;

		EDPplus(5);
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_AS_VENOM_SPLASHER){
		n_PerHIT_DMG = 0;
		not_use_card = 1;
		n_Delay[0] = 1;
		wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);

		if(n_B[en_BOSS] == 0){

			w_SkillMod += (400 + 50 * n_A_ActiveSkillLV + 20 * eval(document.calcForm.SkillSubNum.value)) /100;
			ATKbai02(w_SkillMod,0);


			for(var i=0;i<=2;i++){
				w_DMG[i] = BattleCalc(n_A_DMG[i],i);
				w_DMG[i] = Math.floor(w_DMG[i]);
			}
		}else if(n_B[en_BOSS] == 5){
			w_DMG[0] = w_DMG[1] = w_DMG[2] = 1;
		}else{
			w_DMG[0] = w_DMG[1] = w_DMG[2] = 0;
		}
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_AX_SOUL_DESTROYER){
		not_use_card = 1;
		n_Enekyori=1;
		wCast = 0.5 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 0.8 + 0.2 * n_A_ActiveSkillLV;

		w_SBr = new Array();
		w = n_A_INT * 5 * n_A_ActiveSkillLV;
		w_SBr[2] = w + 1000 - Math.floor((n_B[en_HARDDEF] + n_B[en_HARDMDEF] + n_B_MDEF2 + n_B_DEF2[2])/2);
		w_SBr[1] = w + 750 - Math.floor((n_B[en_HARDDEF] + n_B[en_HARDMDEF] + n_B_MDEF2 + n_B_DEF2[1])/2);
		w_SBr[0] = w + 500 - Math.floor((n_B[en_HARDDEF] + n_B[en_HARDMDEF] + n_B_MDEF2 + n_B_DEF2[0])/2);
		for(var i=0;i<=2;i++)
			w_SBr[i] = tPlusDamCut(w_SBr[i]);

		for(var i=0;i<=2;i++){
			w_DMG[i] = BattleCalc(n_A_DMG[i],i);
			w_DMG[i] *= n_A_ActiveSkillLV;
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] + w_SBr[i];
			InnStr[i] += Last_DMG_A[i] +" ("+ w_DMG[i] +" + "+ w_SBr[i] +")";
			w_DMG[i] = Last_DMG_A[i];
		}
		var wX = BattleCalc2(0) * n_A_ActiveSkillLV;
		n_PerHIT_DMG = wX + w_SBr[1];
		str_PerHIT_DMG = (wX + w_SBr[0]) +"~"+ (wX + w_SBr[2]);
		if(n_B[en_BOSS] == 5){
			for(var i=0;i<=2;i++){
				Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] = 1;
				InnStr[i] += Last_DMG_A[i];
			}
		}
		w_DMG[1] = (w_DMG[1] * w_HIT + n_PerHIT_DMG *(100-w_HIT))/100;

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_CR_GRAND_CROSS){
		n_PerHIT_DMG = 0;
		
		myInnerHtml("CRIATKname",'<Font color="#FF0000">Health Drain</Font>',0);
		myInnerHtml("CRIATK",'<Font color="#FF0000">'+ Math.floor(n_A_MaxHP /5) +"</Font>",0);

		myInnerHtml("CRInumname",'<Font color="#FF0000">Damage Backlash</Font>',0);

		
		work_A_VITDEF = [0,0,0];
		work_A_VITDEF[0] = n_A_VITDEF;
		work_A_VITDEF[1] = n_A_VITDEF;
		work_A_VITDEF[2] = n_A_VITDEF;
		n_A_INTMDEF = n_A_INT + Math.floor(n_A_VIT /2);

		for(var i=0;i<=2;i++){
			w_DMG[i] = BK_n_A_DMG[i] * (100 - n_A_DEF) /100 - work_A_VITDEF[i] + n_A_WeaponLV_seirenATK;
			w_DMG[i] = Math.floor(w_DMG[i] * (w_SkillMod + n_A_ActiveSkillLV * 0.4));

			w = BK_n_A_MATK[i] *(100 - n_A_MDEF)/100 - n_A_INTMDEF;
			w = Math.floor(w * (n_A_ActiveSkillLV * 0.4 +1));

			w_DMG[i] += w;
			w_DMG[i] = Math.floor(w_DMG[i] * (100-n_tok[57]) /100);
			w_DMG[i] = Math.floor(w_DMG[i] * (100-n_tok[66]) /100);
			w_DMG[i] = Math.floor(w_DMG[i] * (100-n_tok[78]) /100);
			if(eval(document.calcForm.A_youshi.checked))
				w_DMG[i] = Math.floor(w_DMG[i] * (100-n_tok[190]) /100);
			else
				w_DMG[i] = Math.floor(w_DMG[i] * (100-n_tok[191]) /100);
			w_DMG[i] = Math.floor(w_DMG[i] * zokusei[n_A_BodyZokusei * 10 +1][6]/100);
			
			w_DMG[i] = Math.floor(w_DMG[i] /2);
		}
		myInnerHtml("CRInum",'<Font color="#FF0000">'+3+ SubName[8][Lang] + w_DMG[0] +"~"+ w_DMG[2] +" Damage</Font>",0);
		

		n_Enekyori=2;
		n_A_Weapon_zokusei = ele_HOLY;
		wCast = 3 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 1.5;
		wLAch=1;

		for(var i=0;i<=2;i++){
			w_DMG[i] = BK_n_A_DMG[i] * defReduction(n_B[en_HARDDEF]) - n_B_DEF2[i] + n_A_WeaponLV_seirenATK;
			w_DMG[i] *= w_SkillMod + n_A_ActiveSkillLV * 0.4;
			w_DMG[i] = Math.floor(w_DMG[i] * zokusei[n_B[en_ELEMENT]][ele_DARK]/100);
			w = BK_n_A_MATK[i] *(100 - n_B[en_HARDMDEF])/100 -n_B_MDEF2;
			w *= (n_A_ActiveSkillLV * 0.4 +1);
			w = Math.floor(w * zokusei[n_B[en_ELEMENT]][ele_DARK]/100);
			w_DMG[i] = tPlusDamCut(Math.floor((w+w_DMG[i])*zokusei[n_B[en_ELEMENT]][ele_DARK]/100));
			if(w_DMG[i] < 1)w_DMG[i]=1;
			if(60<=n_B[en_ELEMENT]&&n_B[en_ELEMENT]<=69)w_DMG[i]=0;
		}

		if(n_B_IJYOU[6] == 0){
			for(var b=0;b<=2;b++){
				Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] * 3;
				InnStr[b] += Last_DMG_A[b] + " ("+w_DMG[b]+ SubName[8][Lang] +"3hit)";
				w_DMG[b] = Last_DMG_A[b];
			}
		}else{
			for(var b=0;b<=2;b++){
				Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] * 4;
				InnStr[b] += Last_DMG_A[b] + " ("+ (w_DMG[b] * 2) +" + " +w_DMG[b]+ SubName[8][Lang] +"2hit)";
				w_DMG[b] = Last_DMG_A[b];
			}
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_ME_CART_REVOLUTION){
		wCR = 100;
		n_PerHIT_DMG = Math.floor(BattleCalc2(0) * 2 * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
		
		if(SkillSearch(327)){
			wCR += 20 * SkillSearch(327);
		}else{
			if(SkillSearch(154))
				wCR += SkillSearch(154) * 5;
			if(SkillSearch(154)==0 && n_A_PassSkill2[8])
				wCR += n_A_PassSkill2[8] * 5 / 10;
		}
		CR_n_A_DMG = [0,0,0];

		CRbai = eval(document.calcForm.SkillSubNum.value) / 8000;
		for(b=0;b<=2;b++)
			CR_n_A_DMG[b] = Math.floor(n_A_DMG[b] * wCR / 100);

		w_SkillMod += 0.5;
		ATKbai02(w_SkillMod,0);

		for(var b=0;b<=2;b++){
			w_DMG[b] = BattleCalc(n_A_DMG[b],b);
			w_DMG[b] += Math.floor(BattleCalc(CR_n_A_DMG[b],b) * CRbai);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] + EDP_DMG(b);
			InnStr[b] += Last_DMG_A[b];
		}
		w_DMG[1] = (w_DMG[1] * w_HIT + BattleCalc2(0) * 2 *(100-w_HIT))/100;
		w_DMG[1] = Math.floor(w_DMG[1] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);

		EDPplus(1);

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_PA_PRESSURE){
		n_PerHIT_DMG = 0;
		w_DMG[2] = 500 + 300 * n_A_ActiveSkillLV;
		if(n_B[en_BOSS] == 5)
			w_DMG[2] = 1;
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		wCast = (1.5+ 0.5 * n_A_ActiveSkillLV) * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 1.5 + n_A_ActiveSkillLV *0.5;
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
	}else if(n_A_ActiveSkill==skill_PA_MARTYR_RECONING){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		w_DMG[2] = Math.floor(n_A_MaxHP * 0.09 * (0.9 + 0.1 * n_A_ActiveSkillLV));
		w_DMG[2] = BaiCI(w_DMG[2]);
		w_DMG[2] = Math.floor(w_DMG[2] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
	}else if(n_A_ActiveSkill==skill_MO_OCCULT_IMPACTION){
		n_PerHIT_DMG = 0;
		w_HIT_HYOUJI = 100;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		ATKbai02(w_SkillMod,0);
		w_SkillMod += n_A_ActiveSkillLV *0.75;
		
		work_B_DEF2 = [0,0,0];
		work_B_DEF2[0] = n_B_DEF2[2];
		work_B_DEF2[1] = n_B_DEF2[1];
		work_B_DEF2[2] = n_B_DEF2[0];

		for(var b=0;b<=2;b++){
			w_DMG[b] = Math.floor(Math.floor(BK_n_A_DMG[b] * w_SkillMod) * (work_B_DEF2[b]+n_B[en_HARDDEF]) /50);
			w_DMG[b] = BaiCI(w_DMG[b]);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] + EDP_DMG(b);
			InnStr[b] += Last_DMG_A[b];
		}

		EDPplus(1);

		wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 0.5;
		CastAndDelay();
		BattleCalc998();
	}else if(n_A_ActiveSkill==skill_MO_ASURA || n_A_ActiveSkill==skill_MO_MAX_ASURA){
		n_PerHIT_DMG = 0;
		w_HIT_HYOUJI = 100;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		ATKbai02(w_SkillMod,0);
		if(n_A_ActiveSkill==skill_MO_ASURA)
			w_SkillMod += 7 + eval(document.calcForm.SkillSubNum.value) /10;
		else
			w_SkillMod += 7 + (n_A_MaxSP-1) /10;
		wASYU = 250 + n_A_ActiveSkillLV * 150;

		for(var b=0;b<=2;b++){
			w_DMG[b] = Math.floor(BK_n_A_DMG[b] * w_SkillMod) + wASYU;
			w_DMG[b] = BaiCI(w_DMG[b]);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] + EDP_DMG(b);
			InnStr[b] += Last_DMG_A[b];
		}

		EDPplus(1);

		wCast = (4.5 - 0.5 * n_A_ActiveSkillLV) * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 3.5 - 0.5 * n_A_ActiveSkillLV;
		CastAndDelay();

		BattleCalc998();
	}else if(n_A_ActiveSkill==skill_NIN_THROW_DAGGER){
		n_Enekyori=1;
		not_use_card = 1;
		ATKbai02(w_SkillMod,0);

		for(var b=0;b<=2;b++){
			w_DMG[b] = BattleCalc(n_A_DMG[b],b);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b];
			InnStr[b] += Last_DMG_A[b];
		}
		w_DMG[1] = (w_DMG[1] * w_HIT + BattleCalc2(0) * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100 *(100-w_HIT))/100;
		n_PerHIT_DMG = BattleCalc2(0) * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100;

		CastAndDelay();
		BattleCalc998();
	}else if(n_A_ActiveSkill==skill_NIN_THROW_KUNAI){
		n_Enekyori=1;
		n_Delay[2] = 2.5;
		not_use_card = 1;
		ATKbai02(w_SkillMod,0);

		n_A_Weapon_zokusei = KunaiOBJ[eval(document.calcForm.SkillSubNum.value)][1];

		for(var b=0;b<=2;b++){
			w_DMG[b] = BattleCalc(n_A_DMG[b],b);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			Last_DMG_B[b] = w_DMG[b];
			Last_DMG_A[b] = w_DMG[b] * 3;
			InnStr[b] += Last_DMG_A[b] + " ("+ Last_DMG_B[b] + SubName[8][Lang] +"3hit)";
			w_DMG[b] = Last_DMG_A[b];
		}
		var wX = Math.floor(BattleCalc2(0) * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
		w_DMG[1] = (w_DMG[1] * w_HIT + wX * 3 *(100-w_HIT))/100;
		n_PerHIT_DMG = wX * 3;
		str_PerHIT_DMG = wX * 3 +" (3"+ SubName[8][Lang] + wX +" Damage)"

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_NIN_THROW_HUUMA_SHURIKEN){
		w_SkillMod += (n_A_ActiveSkillLV * 1.5 +0.5);
		n_Enekyori=1;
		ATKbai02(w_SkillMod,0);
		wCast = 3 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 3;
		wActiveHitNum = 2 + Math.round(n_A_ActiveSkillLV / 2);

		for(var b=0;b<=2;b++){
			w_DMG[b] = BattleCalc(n_A_DMG[b],b);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			if(wActiveHitNum > 1)
				w_DMG[b] = Math.floor(w_DMG[b] / wActiveHitNum) * wActiveHitNum;
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b];
			InnStr[b] += Last_DMG_A[b];
			InnStr[b] += " ("+ (Last_DMG_A[b] / wActiveHitNum) +" x "+ wActiveHitNum +"Hit)";
		}
		w_DMG[1] = (w_DMG[1] * w_HIT + BattleCalc2(0)* zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100 *(100-w_HIT))/100;
		n_PerHIT_DMG = BattleCalc2(0) * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100;

		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_NIN_FINAL_STRIKE || n_A_ActiveSkill==skill_GS_FINAL_STRIKE_MAX){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		n_Enekyori=1;
		ATKbai02(w_SkillMod,0);
		if(n_A_ActiveSkill==skill_NIN_FINAL_STRIKE)
			w_1senHP = eval(document.calcForm.SkillSubNum.value);
		else
			w_1senHP = n_A_MaxHP -1;

		w = (n_A_Weapon_ATK + n_A_Weapon_UpATK + n_A_EquipATK + n_A_Weapon_OverRefine);
		w_DMG[0] = (n_A_statATK + w + n_A_ActiveSkillLV) * 40 + w_1senHP * (n_A_BaseLV / 100) * n_A_ActiveSkillLV / 10;
		w_DMG[0] = BattleCalc4(w_DMG[0],0,0);
		w_DMG[0] = Math.floor(w_DMG[0] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);

		w_DMG[2] = w_DMG[1] = w_DMG[0];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		CastAndDelay();

		w_HIT_HYOUJI = 100;
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_AL_ACID_TERROR){
		n_PerHIT_DMG = 0;
		not_use_card = 1;
		n_Enekyori=1;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		w_SkillMod = (50 + n_A_ActiveSkillLV * 50) /100;

		for(var b=0;b<=2;b++){
			w_DMG[b] = Math.floor((BK_n_A_DMG[b] - n_B_DEF2[b]) * w_SkillMod);
			w_DMG[b] = Math.floor(w_DMG[b] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100);
			w_DMG[b] = Math.floor(BaiCI(w_DMG[b]));
			Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b];
			InnStr[b] += Last_DMG_A[b];
		}

		wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_BC_ACID_DEMONSTRATION){
		n_PerHIT_DMG = 0;
		n_Enekyori=1;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		wHITsuu = n_A_ActiveSkillLV;

		wAD = 0.7 * n_A_INT * n_A_INT * n_B[en_VIT] / (n_A_INT + n_B[en_VIT]);
		w_DMG[2] = Math.floor(wAD);
		w_DMG[2] = tPlusDamCut(Math.floor(w_DMG[2] * zokusei[n_B[en_ELEMENT]][ele_NEUTRAL]/100));
		if(Taijin==1)
			w_DMG[2] = Math.floor(w_DMG[2] /2);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_B[i] = w_DMG[i];
			Last_DMG_A[i] = w_DMG[i] * wHITsuu;
			InnStr[i] += Last_DMG_A[i] + " ("+ Last_DMG_B[i] + SubName[8][Lang] +wHITsuu+"hit)";
			w_DMG[i] = Last_DMG_A[i];
		}

		wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 1;
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_HU_LAND_MINE || n_A_ActiveSkill==skill_HU_BLAST_MINE || n_A_ActiveSkill==skill_HU_CLAYMORE_TRAP){
		n_PerHIT_DMG = 0;
		n_Delay[0] = 1;
		if(n_A_ActiveSkill==skill_HU_LAND_MINE){
			n_A_Weapon_zokusei = ele_EARTH;
			w_DMG[2] = Math.floor((75 + n_A_DEX) * (1+ n_A_INT /100) * n_A_ActiveSkillLV * zokusei[n_B[en_ELEMENT]][ele_EARTH]/100);
		}
		else if(n_A_ActiveSkill==skill_HU_BLAST_MINE){
			n_A_Weapon_zokusei = ele_WIND;
			w_DMG[2] = Math.floor((50 + n_A_DEX/2) * (1+ n_A_INT /100) * n_A_ActiveSkillLV * zokusei[n_B[en_ELEMENT]][ele_WIND]/100);
		}
		else if(n_A_ActiveSkill==skill_HU_CLAYMORE_TRAP){
			n_A_Weapon_zokusei = ele_FIRE;
			w_DMG[2] = Math.floor((75 + n_A_DEX/2) * (1+ n_A_INT /100) * n_A_ActiveSkillLV * zokusei[n_B[en_ELEMENT]][ele_FIRE]/100);		}

		w_DMG[2] = tPlusDamCut(w_DMG[2]);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_AC_HEAL){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_HOLY;
		n_Delay[2] = 1;
		n_Enekyori=2;
		w_DMG[2] = HealCalc(n_A_ActiveSkillLV,0);
		w_DMG[2] = Math.floor(Math.floor(w_DMG[2] / 2) * zokusei[n_B[en_ELEMENT]][ele_DARK]/100);
		if(n_B[en_ELEMENT] < 90){
			w_DMG[2]=0;
		}

		var wX = n_tok[170+n_B[en_RACE]];
		w_DMG[2] = Math.floor(w_DMG[2] * (100 + wX) /100);

		wHealBAI = 100 + n_tok[93];
		w_DMG[2] = Math.floor(w_DMG[2] * wHealBAI /100);

		w_DMG[2] = tPlusDamCut(w_DMG[2]);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_PR_SANCTUARY){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_HOLY;
		wCast = 5 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[0] = 1;
		n_Enekyori=2;
		if(n_A_ActiveSkillLV <= 6)
			w_DMG[2] = 100 * n_A_ActiveSkillLV;
		else
			w_DMG[2] = 777;

		w_HEAL_BAI = 100 + n_tok[94];
		w_DMG[2] = Math.floor(w_DMG[2] * w_HEAL_BAI / 100);

		w_DMG[2] = Math.floor(Math.floor(w_DMG[2] / 2) * zokusei[n_B[en_ELEMENT]][ele_DARK]/100);
		if(n_B[en_ELEMENT] < 90 && n_B[en_RACE] != 6)
			w_DMG[2]=0;

		var wX = n_tok[170+n_B[en_RACE]];
		w_DMG[2] = Math.floor(w_DMG[2] * (100 + wX) /100);

		w_HEAL_BAI = 100 + n_tok[96];
		w_DMG[2] = Math.floor(w_DMG[2] * w_HEAL_BAI / 100);

		w_DMG[2] = tPlusDamCut(w_DMG[2]);
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
			InnStr[i] += Last_DMG_A[i];
		}
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_PR_TURN_UNDEAD || n_A_ActiveSkill==skill_PR_RESSURECTION){
		n_PerHIT_DMG = 0;
		if(n_A_ActiveSkill==102){
			n_A_Weapon_zokusei = ele_HOLY;
			wCast = 1 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		}else{
			n_A_Weapon_zokusei = ele_NEUTRAL;
			wCast = 8 - n_A_ActiveSkillLV * 2;
			wCast = wCast * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		}
		n_Enekyori=2;
		if(n_B[en_ELEMENT] < 90){
			w = 0;
			w_DMG[2] = 0;
			w_DMG[0] = 0;
			w_DMG[1] = 0;
		}else{
			if(n_B[en_BOSS] != 1){
				w = (20 * n_A_ActiveSkillLV + n_A_BaseLV + n_A_INT +n_A_LUK)/1000;
				w_DMG[2] = n_B[en_HP];
			}
			else{
				w = 0;
				w_DMG[2] = 0;
			}
			w_DMG[0] = n_A_BaseLV + n_A_INT + n_A_ActiveSkillLV *10;
			w_DMG[0] = Math.floor(w_DMG[0] * zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei]/100);
			w_DMG[1] = Math.round((n_B[en_HP] * w + w_DMG[0] * (100-w)/100));
		}
		for(var i=0;i<=2;i++)
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i];
		InnStr[0] += w_DMG[0] +" (Damage on Failure)";
		InnStr[1] += w_DMG[1] +" (Considering the Success Chance)";
		InnStr[2] += Math.floor(w_DMG[2] * zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei]/100) +" (" +Math.floor(w *10000)/100 +"% Success Chance)";

		n_Delay[2] = 3;
		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
		
	}else if(n_A_ActiveSkill==skill_HW_GRAVITY_FIELD){
		n_PerHIT_DMG = 0;
		n_A_Weapon_zokusei = ele_NEUTRAL;
		n_Delay[6] = 9;
		n_Enekyori=2;
		wHITsuu = 2 * n_Delay[6] + 1;
		w_FixCast = 1.0;
		w_VarCast = 0;
		w_DMG[2] = 500 + 100 * n_A_ActiveSkillLV;

		w_DMG[2] = Math.floor(w_DMG[2]);

		if(n_B[en_BOSS] == 5)
			w_DMG[2] = 1;
		w_DMG[0] = w_DMG[1] = w_DMG[2];
		for(var i=0;i<=2;i++){
			Last_DMG_A[i] = Last_DMG_B[i] = w_DMG[i] * wHITsuu;
			w_DMG[i] = Last_DMG_A[i]
		}
		var wStrG = Last_DMG_A[0] +" ("+ (w_DMG[0] / wHITsuu) +" x "+ wHITsuu +"hit)"
		for(i=0;i<=2;i++)
			InnStr[i] += wStrG;

		wCast = 5 * (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);
		n_Delay[2] = 2;
		w_HIT_HYOUJI = 100;
		CastAndDelay();

		BattleCalc998();
		
// Magic Skills ----------------------------------
	}else{
		n_PerHIT_DMG = 0;
		n_Enekyori=2;
		w_SkillMod = 1;
		n_bunkatuHIT = 0;
		if(n_A_ActiveSkill==skill_MA_FIRE_BOLT){
			n_A_Weapon_zokusei = ele_FIRE;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 0.4 + 0.4 * n_A_ActiveSkillLV;
			n_Delay[2] = 0.8 + n_A_ActiveSkillLV * 0.2;
		
		}else if(n_A_ActiveSkill==skill_MA_COLD_BOLT){
			n_A_Weapon_zokusei = ele_WATER;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 0.4 + 0.4 * n_A_ActiveSkillLV;
			n_Delay[2]= 0.8 + n_A_ActiveSkillLV * 0.2;
		
		}else if(n_A_ActiveSkill==skill_MA_LIGHTNING_BOLT){
			n_A_Weapon_zokusei = ele_WIND;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 0.4 + 0.4 * n_A_ActiveSkillLV;
			n_Delay[2] = 0.8 + n_A_ActiveSkillLV * 0.2;
		
		}else if(n_A_ActiveSkill==skill_MA_FIRE_BALL){
			n_A_Weapon_zokusei = ele_FIRE;
			wCast = 1.6;
			if(n_A_ActiveSkillLV <=5){
				//wCast = 1.6;
				n_Delay[2] = 1.5;
			}else{
				//wCast = 1;
				n_Delay[2] = 1;
			}
			w_SkillMod = 1.4 + n_A_ActiveSkillLV * 0.2;
		
		}else if(n_A_ActiveSkill==skill_MA_FIRE_WALL){
			n_A_Weapon_zokusei = ele_FIRE;
			wHITsuu = 4 + n_A_ActiveSkillLV;
			wCast = 2.2 - (n_A_ActiveSkillLV * 0.2);
			n_Delay[2] = 0.1;
			w_SkillMod = 0.5;
		
		}else if(n_A_ActiveSkill==skill_MA_FROST_DIVER){
			n_A_Weapon_zokusei = ele_WATER;
			wCast = 0.8;
			n_Delay[2] = 1.5;
			w_SkillMod = 1 + n_A_ActiveSkillLV * 0.1;
		
		}else if(n_A_ActiveSkill==skill_MA_THUNDER_STORM){
			n_A_Weapon_zokusei = ele_WIND;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 0.8 * n_A_ActiveSkillLV;
			n_Delay[2] = 2;
			w_SkillMod = 1;
		
		}else if(n_A_ActiveSkill==skill_MA_NAPALM_BEAT){
			n_A_Weapon_zokusei = ele_GHOST;
			wCast = 0.5;
			if(n_A_ActiveSkillLV==10)
				n_Delay[2] = 0.5;
			else if(n_A_ActiveSkillLV==9)
				n_Delay[2] = 0.6;
			else if(n_A_ActiveSkillLV==8)
				n_Delay[2] = 0.7;
			else if(n_A_ActiveSkillLV>=6)
				n_Delay[2] = 0.8;
			else if(n_A_ActiveSkillLV>=4)
				n_Delay[2] = 0.9;
			else
				n_Delay[2] = 1;
			w_SkillMod = 0.7 + n_A_ActiveSkillLV * 0.1;
		
		}else if(n_A_ActiveSkill==skill_MA_SOUL_STRIKE){
			n_A_Weapon_zokusei = ele_GHOST;
			wHITsuu = Math.round(n_A_ActiveSkillLV / 2);
			wCast = 0.5;
			if(n_A_ActiveSkillLV % 2 == 0)
				n_Delay[2] = 0.8 + n_A_ActiveSkillLV / 2 *0.2;
			else
				n_Delay[2] = 1 + (n_A_ActiveSkillLV+1) / 2 *0.2;
		
		}else if(n_A_ActiveSkill==skill_WI_FIRE_PILLAR){
			n_A_Weapon_zokusei = ele_FIRE;
			wHITsuu = (n_A_ActiveSkillLV +2);
			wCast = 2.64 - (0.24 * n_A_ActiveSkillLV);
			n_Delay[2] = 1;
			w_SkillMod = 0.2;
		
		}else if(n_A_ActiveSkill==skill_WI_SIGHTRASHER){
			n_A_Weapon_zokusei = ele_FIRE;
			wCast = 0.4;
			n_Delay[2] = 2;
			w_SkillMod = 1 + n_A_ActiveSkillLV * 0.2;
		
		}else if(n_A_ActiveSkill==skill_WI_METEOR_STORM){
			n_A_Weapon_zokusei = ele_FIRE;
			wHITsuu = Math.floor((n_A_ActiveSkillLV+1) / 2);
			wCast = 12;
			n_Delay[1] = 0;
			n_Delay[2] = Math.floor(n_A_ActiveSkillLV / 2) * 1 +2;
			w_SkillMod = 1.25;
		
		}else if(n_A_ActiveSkill==skill_WI_JUPITEL_THUNDER){
			n_A_Weapon_zokusei = ele_WIND;
			wHITsuu = n_A_ActiveSkillLV + 2;
			wCast = 2 + n_A_ActiveSkillLV * 0.4;
		
		}else if(n_A_ActiveSkill==skill_WI_LORD_OF_VERMILLION){
			n_A_Weapon_zokusei = ele_WIND;
			wHITsuu = 4;
			wCast = 12.4 - n_A_ActiveSkillLV * 0.4;
			n_Delay[2] = 5;
			n_Delay[6] = 4;
			if (n_A_ActiveSkillLV <= 3)
				w_SkillMod = 1.0;
			else if (n_A_ActiveSkillLV <= 6)
				w_SkillMod = 0.4 + n_A_ActiveSkillLV * 0.2;
			else if (n_A_ActiveSkillLV <= 9)
				w_SkillMod = n_A_ActiveSkillLV * 0.4 - 0.8;
			else // lvl10
				w_SkillMod = 3.3;
		
		}else if(n_A_ActiveSkill==skill_WI_WATER_BALL || n_A_ActiveSkill==skill_WATER_BALL2){
			n_A_Weapon_zokusei = ele_WATER;
			if(n_A_ActiveSkillLV >= 4)
				wHITsuu = 25
			else if(n_A_ActiveSkillLV >= 2)
				wHITsuu = 9;
			SG_Special_HITnum = wHITsuu;
			wCast = n_A_ActiveSkillLV;
			w_SkillMod = 1 + n_A_ActiveSkillLV * 0.3;
			n_Delay[3] = 0.1 * wHITsuu;
		
		}else if(n_A_ActiveSkill==skill_WI_FROST_NOVA){
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = 1.0 + n_A_ActiveSkillLV * 0.10;
			if (n_A_ActiveSkillLV <= 4)
				wCast = 0.8 - Math.floor((n_A_ActiveSkillLV-1) /2) * 0.08;
			else
				wCast = 0.8 - Math.floor((n_A_ActiveSkillLV-2) /2) * 0.08;
			n_Delay[2] = 1;
		
		}else if(n_A_ActiveSkill==skill_WI_STORM_GUST){
			n_A_Weapon_zokusei = ele_WATER;
			wHITsuu = eval(document.calcForm.SkillSubNum.value);
			SG_Special_HITnum = wHITsuu;
			wCast = 4 + n_A_ActiveSkillLV * 0.8;
			n_Delay[2] = 5;
			n_Delay[6] = 4.5;
			w_SkillMod = 0.7 + n_A_ActiveSkillLV * 0.5;
		
		}else if(n_A_ActiveSkill==skill_WI_EARTH_SPIKE || n_A_ActiveSkill==skill_WI_HEAVENS_DRIVE || n_A_ActiveSkill==skill_HEAVENS_DRIVE2){
			n_A_Weapon_zokusei = ele_EARTH;
			wHITsuu = n_A_ActiveSkillLV;
			if(n_A_ActiveSkill==skill_WI_EARTH_SPIKE){
				wCast = n_A_ActiveSkillLV *0.56;
				n_Delay[2] = 0.8 + n_A_ActiveSkillLV * 0.2;
				w_SkillMod = 1.0;
			}else{
				wCast = n_A_ActiveSkillLV * 0.8;
				n_Delay[2] = 1;
				w_SkillMod = 1.25;
			}
		
		}else if(n_A_ActiveSkill==skill_HW_NAPALM_VULCAN){
			wHITsuu = n_A_ActiveSkillLV;
			n_A_Weapon_zokusei = ele_GHOST;
			wCast = 1;
			n_Delay[2] = 1;
			w_SkillMod = 0.7 + n_A_ActiveSkillLV * 0.1;
		
		}else if(n_A_ActiveSkill==skill_AC_HOLY_LIGHT || n_A_ActiveSkill==skill_PR_HOLY_LIGHT_SL){
			n_A_Weapon_zokusei = ele_HOLY;
			wCast = 2;
			w_SkillMod = 1.25;
			if(n_A_ActiveSkill==skill_PR_HOLY_LIGHT_SL)
				w_SkillMod *= 5;
		
		}else if(n_A_ActiveSkill==skill_PR_MAGNUS_EXORCISMUS){
			n_Delay[0] = 1;
			n_A_Weapon_zokusei = ele_HOLY;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 15;
			n_Delay[2] = 4;
			if(n_B[en_RACE] != 6 && n_B[en_ELEMENT] < 90){
				n_A_MATK[2]=0;n_A_MATK[0]=0;n_A_MATK[1]=0;
			}
		
		}else if(n_A_ActiveSkill==skill_MON_DARK_STRIKE){
			n_A_Weapon_zokusei = ele_DARK;
			wHITsuu = Math.round(n_A_ActiveSkillLV / 2);
			wCast = 0.5;
			if(n_A_ActiveSkillLV % 2 == 0)
				n_Delay[2] = 0.8 + n_A_ActiveSkillLV / 2 *0.2;
			else
				n_Delay[2] = 1 + (n_A_ActiveSkillLV+1) / 2 *0.2;
		
		}else if(n_A_ActiveSkill==skill_SL_ESTIN){
			n_A_Weapon_zokusei = eval(document.calcForm.A_Weapon_zokusei.value);
			wCast = 0.1;
			n_Delay[2] = 0.5;
			if(n_B[en_SIZE] == 0)
				w_SkillMod = n_A_ActiveSkillLV * 0.1;
			else
				w_SkillMod = 0.01;
			if(Taijin==1)
				w_SkillMod = 0;
		
		}else if(n_A_ActiveSkill==skill_SL_ESTUN){
			n_A_Weapon_zokusei = eval(document.calcForm.A_Weapon_zokusei.value);
			wCast = 0.1;
			n_Delay[2] = 0.5;

			w_SkillMod = n_A_ActiveSkillLV * 0.05;

			if(Taijin==1)
				w_SkillMod = 0;
		
		}else if(n_A_ActiveSkill==skill_SL_ESMA){
			n_A_Weapon_zokusei = eval(document.calcForm.A_Weapon_zokusei.value);
			n_Delay[0] = 1;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 2;
			n_Delay[2] = 0.5;
			w_SkillMod = 0.4 + n_A_BaseLV / 100;
			if(Taijin==1)
				w_SkillMod = 0;
		
		}else if(n_A_ActiveSkill==skill_NIN_FLAMING_PETALS){
			n_A_Weapon_zokusei = ele_FIRE;
			w_SkillMod = 0.9;
			wHITsuu = n_A_ActiveSkillLV;
			wCast = 0.7 * n_A_ActiveSkillLV;
		
		}else if(n_A_ActiveSkill==skill_NIN_BLAZE_SHIELD){
			n_A_Weapon_zokusei = ele_FIRE;
			w_SkillMod = 0.5;
			wHITsuu = Math.round(n_A_ActiveSkillLV / 2) +4 ;
			wCast = 6.5 - 0.5 * n_A_ActiveSkillLV;
			n_Delay[2] = 1;
			n_Delay[0] = 1;
		
		}else if(n_A_ActiveSkill==skill_NIN_EXPLODING_DRAGON){
			n_bunkatuHIT = 1;
			n_A_Weapon_zokusei = ele_FIRE;
			w_SkillMod = 1.5 + n_A_ActiveSkillLV * 1.5;
			wHITsuu = 3;
			wCast = 3;
			n_Delay[2] = 3;
		
		}else if(n_A_ActiveSkill==skill_NIN_FREEZING_SPEAR){
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = 1;
			wHITsuu = n_A_ActiveSkillLV + 2;
			wCast = n_A_ActiveSkillLV * 0.7;
		
		}else if(n_A_ActiveSkill==skill_NIN_SNOW_FLAKE_DRAFT){
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = 1.0 + n_A_ActiveSkillLV * 0.5;
			wHITsuu = 1;
			wCast = 3;
			n_Delay[2] = 3;
		
		}else if(n_A_ActiveSkill==skill_NIN_WIND_BLADE){
			n_A_Weapon_zokusei = ele_WIND;
			w_SkillMod = 1.0;
			wHITsuu = Math.floor(n_A_ActiveSkillLV / 2) +1;
			wCast = Math.floor(n_A_ActiveSkillLV / 2) + 1;
			n_Delay[2] = 1;
		
		}else if(n_A_ActiveSkill==skill_NIN_LIGHTNING_JOLT){
			n_A_Weapon_zokusei = ele_WIND;
			w_SkillMod = 1.6 + 0.4 * n_A_ActiveSkillLV;
			wHITsuu = 1;
			wCast = 4;
		
		}else if(n_A_ActiveSkill==skill_NIN_FIRST_WIND){
			n_A_Weapon_zokusei = ele_WIND;
			w_SkillMod = 1.0 + n_A_ActiveSkillLV * 1.0;
			wHITsuu = 1;
			wCast = 4;
		
		}else if(n_A_ActiveSkill==skill_WAR_DRAIN_LIFE){
		// ac 0s, ru 2s
			n_A_Weapon_zokusei = ele_NEUTRAL;
			w_SkillMod = (5.0 + n_A_ActiveSkillLV * 1.0) * n_A_BaseLV/100.0 * (1.0+ n_A_INT*0.001);
			wHITsuu = 1;
			wCast = 4;
		
		}else if(n_A_ActiveSkill==skill_WAR_SOUL_EXPANSION){
		// ac ?s, ru 0.5s
			n_A_Weapon_zokusei = ele_GHOST;
			w_SkillMod = (4.0 + n_A_ActiveSkillLV * 1.0) * (1 + eval(document.calcForm.SkillSubNum.value));
			wHITsuu = 1;
			wCast = 4;
		
		}else if(n_A_ActiveSkill==skill_WAR_CRIMSON_ROCK){
		// ru 5s
			n_A_Weapon_zokusei = ele_FIRE;
			w_SkillMod = (13.0 + n_A_ActiveSkillLV * 3.0);
			wHITsuu = 1;
			n_Delay[2] = 2.0;
			wCast = 6;
			w_VarCast = 5.0/wCast;
			w_FixCast = 1.0/wCast;
			
		}else if(n_A_ActiveSkill==skill_WAR_COMET){
		// ru 3min
			n_A_Weapon_zokusei = ele_NEUTRAL;
			w = eval(document.calcForm.SkillSubNum.value);
			if (w <= 1)
				w_SkillMod = (25.0 + n_A_ActiveSkillLV * 5.0);
			else if (w <= 3)
				w_SkillMod = (16.0 + n_A_ActiveSkillLV * 4.0);
			else if (w <= 5)
				w_SkillMod = (12.0 + n_A_ActiveSkillLV * 3.0);
			else
				w_SkillMod = (8.0 + n_A_ActiveSkillLV * 2.0);
			wHITsuu = 1;
			n_Delay[2] = 5.0;
			wCast = 9.5 * n_A_ActiveSkillLV * 1.5;
			w_VarCast = (9.0 + n_A_ActiveSkillLV)/wCast;
			w_FixCast = (0.5 + n_A_ActiveSkillLV * 0.5)/wCast;
			
		}else if(n_A_ActiveSkill==skill_WAR_FROST_MISTY){
		// ru 8s
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = (2.0 + n_A_ActiveSkillLV * 1.0) * n_A_BaseLV/100.0;
			wHITsuu = 1;
			n_Delay[2] = 2.0;
			wCast = 2;
			
		}else if(n_A_ActiveSkill==skill_WAR_JACK_FROST){
		// ru -
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = (10.0 + n_A_ActiveSkillLV * 3.0);
			wHITsuu = 1;
			n_Delay[2] = 2.0;
			wCast = 2.5;
			
		}else if(n_A_ActiveSkill==skill_WAR_CHAIN_LIGHTNING){
		// ru -
			n_A_Weapon_zokusei = ele_WIND;
			w_SkillMod = (4.0 + n_A_ActiveSkillLV * 1.0);
			wHITsuu = eval(document.calcForm.SkillSubNum.value);
			SG_Special_HITnum = wHITsuu;
			n_Delay[2] = 3.0;
			wCast = 3.0 + n_A_ActiveSkillLV * 0.5;
			
		}else if(n_A_ActiveSkill==skill_WAR_EARTH_STRAIN){
		// ru 10s
			n_A_Weapon_zokusei = ele_EARTH;
			w_SkillMod = (20.0 + n_A_ActiveSkillLV * 1.0) * n_A_BaseLV/100.0;
			wHITsuu = 1;
			n_Delay[2] = 1.0;
			wCast = 2.0 * n_A_ActiveSkillLV * 1.0;
			w_VarCast = (1.0 + n_A_ActiveSkillLV)/wCast;
			w_FixCast = 1.0/wCast;
			
		}else if(n_A_ActiveSkill==skill_WAR_TETRA_VORTEX){
		// ru 15s
			n_A_Weapon_zokusei = eval(document.calcForm.SkillSubNum.value);
			w_SkillMod = (5.0 + n_A_ActiveSkillLV * 5.0);
			wHITsuu = 4;
			SG_Special_HITnum = wHITsuu;
			n_Delay[2] = 3.0;
			wCast = 5.0 * n_A_ActiveSkillLV * 1.0;
			w_VarCast = (4.0 + n_A_ActiveSkillLV)/wCast;
			w_FixCast = 1.0/wCast;
			
		}else if(n_A_ActiveSkill==skill_ABI_JUDEX){
		// ru ?s
			n_A_Weapon_zokusei = ele_HOLY;
			w_SkillMod = (n_A_ActiveSkillLV * 0.8) * n_A_BaseLV/100.0;
			wHITsuu = 1;
			n_Delay[2] = 0.5;
			
		}else if(n_A_ActiveSkill==skill_ABI_ADORAMUS){
		// ru 2s
			n_A_Weapon_zokusei = ele_HOLY;
			w_SkillMod = (5.0 + n_A_ActiveSkillLV * 1.0) * n_A_BaseLV/100.0;
			wHITsuu = 1;
			n_Delay[2] = 0.5;
			
		}else if(n_A_ActiveSkill==skill_SOR_FIRE_WALK || n_A_ActiveSkill==skill_SOR_ELECTRIC_WALK){
		// ru -
			if(n_A_ActiveSkill==skill_SOR_FIRE_WALK || n_A_ActiveSkill==skill_SOR_ELECTRIC_WALK)
				n_A_Weapon_zokusei = ele_FIRE;
			else if(n_A_ActiveSkill==skill_SOR_FIRE_WALK || n_A_ActiveSkill==skill_SOR_ELECTRIC_WALK)
				n_A_Weapon_zokusei = ele_WIND;
			w_SkillMod = (n_A_ActiveSkillLV * 3.0/5.0) * n_A_BaseLV/100.0;
			wHITsuu = eval(document.calcForm.SkillSubNum.value);
			SG_Special_HITnum = wHITsuu;
			wCast = 2.5;
			n_Delay[2] = 1.0;
			
		}else if(n_A_ActiveSkill==skill_SOR_EARTH_GRAVE){
		// ru 5s
			n_A_Weapon_zokusei = ele_EARTH;
			w_SkillMod = (SkillSearch(skill_SA_ENDOW_EARTH) * 2.0 + n_A_ActiveSkillLV * n_A_INT/100) * n_A_BaseLV/300.0;
			wHITsuu = 3;
			wCast = 2.5;
			n_Delay[2] = 1.0;
			
		}else if(n_A_ActiveSkill==skill_SOR_DIAMOND_DUST){
		// ru 5s
			n_A_Weapon_zokusei = ele_WATER;
			w_SkillMod = (SkillSearch(skill_SA_ENDOW_WATER) * 2.0 + n_A_ActiveSkillLV * n_A_INT/100) * n_A_BaseLV/500.0;
			wHITsuu = 5;
			wCast = 6.0;
			n_Delay[2] = 1.0;
			
		}else if(n_A_ActiveSkill==skill_SOR_CLOUD_KILL){
		// ru 5s
			n_A_Weapon_zokusei = ele_POISON;
			w_SkillMod = (n_A_ActiveSkillLV * 0.4) * n_A_BaseLV/100.0;
			wHITsuu = eval(document.calcForm.SkillSubNum.value);
			SG_Special_HITnum = wHITsuu;
			wCast = 4.0;
			n_Delay[2] = 1.0;
			
		}else if(n_A_ActiveSkill==skill_SOR_POISON_BUSTER){
		// ru 2s
			n_A_Weapon_zokusei = ele_POISON;
			w_SkillMod = 0;
			wHITsuu = 1;
			wCast = 5.0;
			n_Delay[2] = 1.0;
			
		}else if(n_A_ActiveSkill==skill_SOR_PSYCHIC_WAVE){
		// ru 5s
			n_A_Weapon_zokusei = ele_NEUTRAL;
			if (SkillSearch(skill_SOR_SPIRIT_CONTROL)==1 && SkillSearch(skill_SOR_SUMMON_LEVEL)==2)
				n_A_Weapon_zokusei = ((SkillSearch(skill_SOR_SUMMON_TYPE)+2)%4)+1;
			w_SkillMod = (n_A_ActiveSkillLV * 0.7 + n_A_INT * 0.03) * n_A_BaseLV/100.0;
			wHITsuu = eval(document.calcForm.SkillSubNum.value);
			SG_Special_HITnum = wHITsuu;
			wCast = 9.0;
			w_VarCast = 8.0/wCast;
			w_FixCast = 1.0/wCast;
			n_Delay[2] = 1.0;
			
		}
		
		
//		else if(n_A_ActiveSkill==skill_WI_STORM_GUST){
//			n_A_Weapon_zokusei = ele_WATER;
//			wHITsuu = eval(document.calcForm.SkillSubNum.value);
//			SG_Special_HITnum = wHITsuu;
//			wCast = 4 + n_A_ActiveSkillLV * 0.8;
//			n_Delay[2] = 5;
//			n_Delay[6] = 4.5;
//			w_SkillMod = 0.7 + n_A_ActiveSkillLV * 0.5;
		
//		}

		wCast *= (n_A_VarCast * w_VarCast + n_A_FixCast * w_FixCast);

		if(n_bunkatuHIT == 0){
			for(var b=0;b<=2;b++){
				w_DMG[b] = BattleMagicCalc(n_A_MATK[b] * w_SkillMod);
				if(SG_Special_HITnum != 0){
					SG_Special_DMG[b] = w_DMG[b];
				}
				Last_DMG_B[b] = w_DMG[b];
				Last_DMG_A[b] = w_DMG[b] * wHITsuu;
				InnStr[b] += Last_DMG_A[b] + " ("+ Last_DMG_B[b] + SubName[8][Lang] +wHITsuu+"hit)";
				w_DMG[b] = Last_DMG_A[b];
			}
		}else{
			for(var b=0;b<=2;b++){
				w_DMG[b] = Math.floor(BattleMagicCalc(n_A_MATK[b] * w_SkillMod) / wHITsuu);
				Last_DMG_A[b] = Last_DMG_B[b] = w_DMG[b] * wHITsuu;
				InnStr[b] += Last_DMG_A[b] + " ("+ w_DMG[b] + SubName[8][Lang] + wHITsuu +"hit)";
				w_DMG[b] *= wHITsuu;
			}
		}

		w_HIT_HYOUJI = 100;
		CastAndDelay();
		BattleCalc998();
	}
}

function BattleMagicCalc(wBMC){ // Magic Damage (rawMDmg)	
	wBMC_MDEF = n_B[en_HARDMDEF];
	var MDEF_Musi = 0;
	if(n_B[en_BOSS]==0 && CardNumSearch(424))
		MDEF_Musi = 1;
	if(MDEF_Musi != 0){
		wBMC_MDEF = 0;
		n_B_MDEF2 = 0;
	}
	if(n_A_ActiveSkill==122)
		wBMC2 = Math.floor(wBMC + 50);
	else
		wBMC2 = Math.floor(wBMC * mdefReduction(wBMC_MDEF) - n_B_MDEF2);
	wBMC2 = Max(1, wBMC2);
	if(n_A_ActiveSkill==104){
		if(n_B[en_RACE] != 6 && n_B[en_ELEMENT] < 90)
			wBMC2=0;
	}

	wBMC2 = Math.floor(wBMC2 * zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei]/100);

	if(90 <= n_B[en_ELEMENT] && n_A_ActiveSkill==47)
		wBMC2 = Math.floor(wBMC2 * (1 + 0.05 * n_A_ActiveSkillLV));

	
	var wX = n_tok[170+n_B[en_RACE]];
	if(n_B[en_RACE]==9  && SkillSearch(234))
		wX += SkillSearch(234) *2;
	wBMC2 = wBMC2 * (100 + wX) /100;

	wBMC2 = tPlusDamCut(wBMC2);
	
	var wX = StPlusCalc2(5000+n_A_ActiveSkill) + StPlusCard(5000+n_A_ActiveSkill);
	if(n_A_ActiveSkill==46 || n_A_ActiveSkill==47 || n_A_ActiveSkill==277)
		if(n_A_JobSearch()==5)
			wX += 20 * CardNumSearch(474);
	if(n_A_ActiveSkill==132 || n_A_ActiveSkill==133)
		if(EquipNumSearch(1146))
			wX += n_A_HEAD_DEF_PLUS;
	if(n_A_ActiveSkill==131)
		if(EquipNumSearch(1169))
			wX += n_A_Weapon_ATKplus;

	wBMC2 = wBMC2 * (100 + wX) / 100;

	wBMC2 = Math.floor(wBMC2);

	return wBMC2;
}

SWs3sw = [0,0,0,0,0,0,0,0,0,0,0,0];

function calcOld(){
	for(var i=0;i<=2;i++)
		InnStr[i] = "";

	StAllCalc();




	wCSize = weaponsize[n_A_WeaponType][n_B[en_SIZE]];
	if(SkillSearch(78)){
		if((n_A_WeaponType==4 || n_A_WeaponType==5) && n_B[en_SIZE]==1)
			wCSize = 1;
	}
	if(SkillSearch(153) || n_A_PassSkill2[7])
		wCSize = 1;
	
	if(cardOBJ[n_A_card[0]][0]==32||cardOBJ[n_A_card[1]][0]==32||cardOBJ[n_A_card[2]][0]==32||cardOBJ[n_A_card[3]][0]==32||cardOBJ[n_A_card[4]][0]==32||cardOBJ[n_A_card[5]][0]==32||cardOBJ[n_A_card[6]][0]==32||cardOBJ[n_A_card[7]][0]==32)
		wCSize = 1;
	if(EquipNumSearch(1177))
		wCSize = 1;

	
	w_HIT = n_A_HIT + 80 - (n_B_FLEE);
	w_HIT_EDP = w_HIT;
	if(w_HIT_EDP > 100)
		w_HIT_EDP = 100;
	if(w_HIT_EDP < 5)
		w_HIT_EDP = 5;
	if(SkillSearch(148))
		w_HIT = Math.floor(w_HIT * (100 + 2 * SkillSearch(148))/100);
	if(n_A_ActiveSkill==70 || n_A_ActiveSkill==6){
		w_HIT *= 1+n_A_ActiveSkillLV *0.05;
	}
	if((n_A_ActiveSkill==83 || n_A_ActiveSkill==388)&& SkillSearch(381)){
		w_HIT *= 1.5;
	}
	if(n_A_ActiveSkill==7){
		w_HIT *= 1+n_A_ActiveSkillLV *0.1;
	}
	if(n_A_ActiveSkill==272){
		w_HIT *= (1 + n_A_ActiveSkillLV * 0.1);
	}
	if(n_A_ActiveSkill==337){
		w_HIT = 100;
	}
	if(n_A_ActiveSkill==384){
		w_HIT = 100;
	}
	if(SkillSearch(364)){
		w_HIT = 100;
	}
	if(w_HIT > 100){
		w_HIT = 100;
	}else if(w_HIT < 5){
		w_HIT = 5;
	}
	if(StPlusCalc2(86)+StPlusCard(86))
		w_HIT = w_HIT + (100 - w_HIT) * (StPlusCalc2(86)+StPlusCard(86)) / 100;

	w_HIT = Math.floor(w_HIT *100)/100;
	w_HIT_HYOUJI = w_HIT;

	if(n_A_ActiveSkill==272)
		n_A_CRI += 20;
	if(n_A_ActiveSkill==401)
		n_A_CRI += 25 + n_A_ActiveSkillLV * 5;
	w_Cri = n_A_CRI - n_B[en_LUK] * 0.2 + 0.1; // Luk
	if(n_B_IJYOU[8]) // Sleep
		w_Cri *= 2;
	if(w_Cri < 0){
		w_Cri = 0;
	}
	else if(w_Cri > 100){
		w_Cri = 100;
	}



	TyouEnkakuSousa3dan = 0;
	wBC3_3danHatudouRitu = 0;
	if(SkillSearch(187))
		wBC3_3danHatudouRitu = 30 - SkillSearch(187);

	
	wDA = SkillSearch(13) * 5;
	if(n_A_WeaponType != 1)
		wDA = 0;
	if(CardNumSearch(43)){
		if(SkillSearch(13) > 1)
			wDA = SkillSearch(13) * 5;
		else
			wDA = 5;
	}
	if(EquipNumSearch(570) && n_A_WeaponType != 0){
		if(SkillSearch(13) > 1)
			wDA = SkillSearch(13) * 5;
		else
			wDA = 10;
	}
	if(EquipNumSearch(399)){
		if(SkillSearch(13) > 5)
			wDA = SkillSearch(13) * 5;
		else
			wDA = 25;
	}
	if(n_A_WeaponType == 17){
		wDA = SkillSearch(427) * 5;
		if(CardNumSearch(43))
			wDA = SkillSearch(427) * 5 + ((100 - SkillSearch(427) * 5) * 5 /100);
		if(EquipNumSearch(570))
			wDA = SkillSearch(427) * 5 + ((100 - SkillSearch(427) * 5) * 10 /100);
	}
	w_HIT_DA = w_HIT;
	if(wDA != 0 && n_A_WeaponType != 17){
		w_HIT_DA = w_HIT_DA * (100 + SkillSearch(13)) /100;
		if(w_HIT_DA >= 100)
			w_HIT_DA=100;
	}

	w998A = 100 - wBC3_3danHatudouRitu;
	w998B = wBC3_3danHatudouRitu * w_HIT /100;
	w998C = wBC3_3danHatudouRitu - w998B;
	w998D = w998A * wDA /100;
	w998E = w998D * w_HIT_DA /100;
	w998F = w998D - w998E;
	w998G = (100-wBC3_3danHatudouRitu-w998D) * w_Cri /100;
	w998H = 100 - wBC3_3danHatudouRitu -w998D -w998G;
	w998I = w998H * w_HIT /100;
	w998J = w998H - w998I;
	w998K = w998B +w998E +w998G +w998I;
	w998L = 100 -w998K;
	


	if(n_A_ActiveSkill == skill_ALL_BASIC_ATTACK || n_A_ActiveSkill==272 || n_A_ActiveSkill==401 || (n_A_ActiveSkill==skill_AS_POISON_REACT && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))){
		w_HIT_HYOUJI = Math.floor(w998K * 100) /100;
		myInnerHtml("CRInum",(Math.round(w998G * 100) / 100) + SubName[0],0);
	}
	
	w_FLEE = n_A_FLEE + 20 - (n_B_HIT);
	if(w_FLEE > 95){
		w_FLEE = 95;
	}else if(w_FLEE < 5){
		w_FLEE = 5;
	}
	if(Taijin==0)
		myInnerHtml("BattleFLEE",Math.floor((w_FLEE + (100 - w_FLEE) * n_A_LUCKY / 100) * 100) / 100,0);

	n_A_workDEX = Math.floor(n_A_DEX * (1 + (n_A_WeaponLV - 1) * 0.2));

	n_A_DMG = [0,0,0];

	
	if(n_A_workDEX>=n_A_Weapon_ATK || SkillSearch(155))
		n_A_DMG[2] = n_A_ATK + n_A_WeaponLV_Maxplus + Math.floor((n_A_Weapon_ATK + wImp)* wCSize);
	else
		n_A_DMG[2] = n_A_ATK + n_A_WeaponLV_Maxplus + Math.floor((n_A_Weapon_ATK-1 + wImp)* wCSize);
	
	if(n_A_WeaponType==weapTyp_BOW||n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)
		n_A_DMG[2] += Math.floor((ArrowOBJ[n_A_Arrow][0]-1) * wCSize);
	

	if(n_A_WeaponType==weapTyp_BOW||n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)
	{
		w1 = n_A_ATK + n_A_WeaponLV_Maxplus + Math.floor(n_A_Weapon_ATK * n_A_Weapon_ATK / 100 * wCSize) + Math.floor(wImp * wCSize);
		w2 = n_A_ATK + n_A_WeaponLV_Maxplus + Math.floor(n_A_Weapon_ATK * n_A_workDEX / 100 * wCSize) + Math.floor(wImp * wCSize);
		
		w = Math.floor((ArrowOBJ[n_A_Arrow][0]-1) * wCSize);
		w1 += w;
		w2 += w;
		if(w1 > w2)w1 = w2;
		if(n_A_DMG[2] < w1)n_A_DMG[2] = w1;
	}

	
	

	if(n_A_WeaponType==weapTyp_BOW||n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)
	{
		n_A_DMG[0] = n_A_ATK + n_A_WeaponLV_Minplus + Math.floor((n_A_Weapon_ATK * n_A_Weapon_ATK / 100 +wImp) * wCSize);
		w = n_A_ATK + n_A_WeaponLV_Minplus + Math.floor((n_A_Weapon_ATK * n_A_workDEX / 100 + wImp) * wCSize);
		if(n_A_DMG[0] > w)n_A_DMG[0] = w;
	}
	else{
		if(n_A_workDEX >= n_A_Weapon_ATK) 
			n_A_DMG[0] = n_A_ATK + n_A_WeaponLV_Minplus + Math.floor((n_A_Weapon_ATK + wImp) * wCSize);
		else{
			
			if(SkillSearch(155))
				n_A_workDEX = n_A_Weapon_ATK;
			n_A_DMG[0] = n_A_ATK + n_A_WeaponLV_Minplus + Math.floor((n_A_workDEX + wImp) * wCSize);
		}
	}

	
	n_A_DMG[1] = (n_A_DMG[0] + n_A_DMG[2]) / 2;

	
	n_Enekyori=0;
	n_A_CriATK = [0,0,0];
	n_A_CriATK[1] = n_A_ATK + (n_A_WeaponLV_Minplus + n_A_WeaponLV_Maxplus) /2 + Math.floor((n_A_Weapon_ATK + wImp)* wCSize);
	n_A_CriATK[0] = n_A_ATK + n_A_WeaponLV_Minplus + Math.floor((n_A_Weapon_ATK + wImp)* wCSize);
	n_A_CriATK[2] = n_A_ATK + n_A_WeaponLV_Maxplus + Math.floor((n_A_Weapon_ATK + wImp)* wCSize);
	
	if(n_A_WeaponType==weapTyp_BOW || 17<=n_A_WeaponType && n_A_WeaponType <= 21){
		n_Enekyori=1;
		if(n_A_WeaponType==weapTyp_BOW){
			for(i=0;i<=2;i++)
				n_A_CriATK[i] += Math.floor((ArrowOBJ[n_A_Arrow][0]) * wCSize);
		}
	}

	
	BK_n_A_DMG = [0,0,0];
	BK_n_A_DMG[2] = n_A_DMG[2];
	BK_n_A_DMG[0] = n_A_DMG[0];
	BK_n_A_DMG[1] = n_A_DMG[1];

	ATKbai01();
	ATKbai02(1,1);

	n_PerHIT_DMG = BattleCalc2(0);

	wCriTyuu=1;
	n_A_CriATK[1] = BattleCalc(n_A_CriATK[1],10);
	n_A_CriATK[0] = BattleCalc(n_A_CriATK[0],10);
	n_A_CriATK[2] = BattleCalc(n_A_CriATK[2],10);
	wCriTyuu=0;

	
	n_A_EDP_DMG = [0,0,0];
	for(var i=0;i<=2;i++)
		n_A_EDP_DMG[i] = BattleCalcEDP(n_A_DMG[i],i);

	
	for(var i=0;i<=2;i++)
		n_A_CriATK[i] += EDP_DMG(i);

	var wk = [0,0,0];
	if(n_A_WeaponType == 11){
		for(var i=0;i<=2;i++){
			wk[i] = Math.floor(n_A_CriATK[i] * (0.01 + SkillSearch(13) * 0.02));
			n_A_CriATK[i] += wk[i];
		}
		if(n_A_CriATK[0] == n_A_CriATK[2])
			myInnerHtml("CRIATK",n_A_CriATK[0] +" ("+ (n_A_CriATK[0] - wk[0]) +" + "+ wk[0] +")",0);
		else
			myInnerHtml("CRIATK",n_A_CriATK[0] +"~"+ n_A_CriATK[2] +" ("+ (n_A_CriATK[0] - wk[0]) +"~"+ (n_A_CriATK[2] - wk[2]) +" + "+ wk[0] +"~"+ wk[2] +")",0);
	}else{
		if(n_A_CriATK[0] == n_A_CriATK[2])
			myInnerHtml("CRIATK",n_A_CriATK[1],0);
		else
			myInnerHtml("CRIATK",n_A_CriATK[0] +"~"+ n_A_CriATK[2],0);
	}

	n_Max_DMG = 0;
	n_Min_DMG = 9999999;
	if((n_A_ActiveSkill == skill_ALL_BASIC_ATTACK  || (n_A_ActiveSkill==skill_AS_POISON_REACT && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))) && w998G > 0){
		n_Min_DMG = n_A_CriATK[0];
		n_Max_DMG = n_A_CriATK[2];
	}

	BattleCalc999();

	if(Taijin==1 && n_Enekyori==0){
		var RS1 = eval(document.calcForm.B_TAISEI14.value);
		var RS2 = eval(document.calcForm.B_TAISEI15.value);
		if(RS1 && n_A_ActiveSkill != 326){
			RS1 = 10 + 3 * RS1;
			var w;
			var w2 = 1;
			if(n_B_KYOUKA[1]==1)
				w2 = 1.5;
			for(var i=0;i<=2;i++){
				w = Math.floor(Last_DMG_A[i] * w2 * RS1 / 100);
				InnStr[i] += "<BR><Font color=Red><B>"+ w +"(Reflection)</B></Font>";
			}
		}
		if(RS2){
			var w;
			var w2 = 1;
			var w3 = 1;
			if(n_B_KYOUKA[1]==1)
				w2 = 1.5;
			if(n_Ses==1){
				if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK)
					w3 = 100 / 60;
				else
					w3 = 100 / 80;
			}
			for(var i=0;i<=2;i++){
				w = Math.floor(Last_DMG_B[i] * w2 * w3 * RS2 / 100)
				InnStr[i] += "<BR><Font color=Red><B>"+ w +"(Reflection)</B></Font>";
			}
		}
	}

	for(var i=0;i<InnStr.length;i++)
		myInnerHtml("strID_"+i,InnStr[i],0);

}

function calc(){ // init BattleCalculation

	for(var i=0;i<=2;i++)
		InnStr[i] = "";
	StAllCalc();

// Size - Weapon Mod -----------------------------------------------
//	wCSize = weaponsize[n_A_WeaponType][n_B[en_SIZE]];
//	if(SkillSearch(78)){
//		if((n_A_WeaponType==4 || n_A_WeaponType==5) && n_B[en_SIZE]==1)
//			wCSize = 1;
//	}
//	if(SkillSearch(153) || n_A_PassSkill2[7])
//		wCSize = 1;
//	if(cardOBJ[n_A_card[0]][0]==32||cardOBJ[n_A_card[1]][0]==32||cardOBJ[n_A_card[2]][0]==32||cardOBJ[n_A_card[3]][0]==32||cardOBJ[n_A_card[4]][0]==32||cardOBJ[n_A_card[5]][0]==32||cardOBJ[n_A_card[6]][0]==32||cardOBJ[n_A_card[7]][0]==32)
//		wCSize = 1;
//	if(EquipNumSearch(1177))
//		wCSize = 1;
	
// Hit Adjustments due skills --------------------
	w_HIT = n_A_HIT - n_B_FLEE;
	w_HIT_EDP = w_HIT;
	
	w_HIT_EDP = Max(5,Min(w_HIT_EDP,100)); // 5 <= x <= 100

	if(SkillSearch(skill_BS_WEAPONRY_RESEARCH))
		w_HIT = Math.floor(w_HIT * (100 + 2 * SkillSearch(skill_BS_WEAPONRY_RESEARCH))/100);
	if(n_A_ActiveSkill==skill_KN_PIERCE || n_A_ActiveSkill==skill_SW_BASH)
		w_HIT *= 1+n_A_ActiveSkillLV *0.05;
	if((n_A_ActiveSkill==skill_AS_SONIC_BLOW || n_A_ActiveSkill==skill_AS_SONIC_BLOW_SL)&& SkillSearch(skill_AS_SONIC_ACCELERATION))
		w_HIT *= 1.5;
	if(n_A_ActiveSkill==skill_SW_MAGNUM_BREAK)
		w_HIT *= 1+n_A_ActiveSkillLV *0.1;
	if(n_A_ActiveSkill==skill_SN_SHARP_SHOOTING)
		w_HIT *= (1 + n_A_ActiveSkillLV * 0.1);
	if(n_A_ActiveSkill==skill_TK_COUNTER_KICK)
		w_HIT = 100;
	if(n_A_ActiveSkill==skill_CR_SHIELD_BOOMERANG_SL)
		w_HIT = 100;
	if(SkillSearch(skill_TKM_UNION))
		w_HIT = 100;
	w_HIT = Max(5,Min(w_HIT,100)); // 5 <= x <= 100
	
	if(StPlusCalc2(bon_CH_GUIDE_ATK)+StPlusCard(bon_CH_GUIDE_ATK))
		w_HIT = w_HIT + (100 - w_HIT) * (StPlusCalc2(bon_CH_GUIDE_ATK)+StPlusCard(bon_CH_GUIDE_ATK)) / 100;

	w_HIT = Math.floor(w_HIT *100)/100;
	w_HIT_HYOUJI = w_HIT;

// Crit Adjustments -------------------------------------
	w_Cri = n_A_CRI - n_B[en_LUK] * 0.2 + 0.1; // CritShield
	if(n_B_IJYOU[status_en_SLEEP]) // Sleep
		w_Cri *= 2;
	w_Cri = Max(0,Min(w_Cri,100)); // 0 <= x <= 100

// DoubleAttack & TripleStrike -------------------------------
	TyouEnkakuSousa3dan = 0; // TripleStrike Delay ?
	wBC3_3danHatudouRitu = 0;
	if(SkillSearch(skill_MO_TRIPLE_STRIKE))
		wBC3_3danHatudouRitu = 30 - SkillSearch(skill_MO_TRIPLE_STRIKE);
	
	wDA = SkillSearch(skill_TH_DOUBLE_ATTACK) * 5;
	if(n_A_WeaponType != 1)
		wDA = 0;
	if(CardNumSearch(43)){ // SideWinder
		if(SkillSearch(skill_TH_DOUBLE_ATTACK) > 1)
			wDA = SkillSearch(skill_TH_DOUBLE_ATTACK) * 5;
		else
			wDA = 5;
	}
	if(EquipNumSearch(570) && n_A_WeaponType != weapTyp_NONE){ // ChickHat
		if(SkillSearch(skill_TH_DOUBLE_ATTACK) > 1)
			wDA = SkillSearch(skill_TH_DOUBLE_ATTACK) * 5;
		else
			wDA = 10;
	}
	if(EquipNumSearch(399)){ // Nagan
		if(SkillSearch(skill_TH_DOUBLE_ATTACK) > 5)
			wDA = SkillSearch(skill_TH_DOUBLE_ATTACK) * 5;
		else
			wDA = 25;
	}
	if(n_A_WeaponType == weapTyp_HANDGUN){
		wDA = SkillSearch(skill_GS_CHAIN_ACTION) * 5;
		if(CardNumSearch(43)) // SideWinder
			wDA = SkillSearch(skill_GS_CHAIN_ACTION) * 5 + ((100 - SkillSearch(skill_GS_CHAIN_ACTION) * 5) * 5 /100);
		if(EquipNumSearch(570)) // ChickHat
			wDA = SkillSearch(skill_GS_CHAIN_ACTION) * 5 + ((100 - SkillSearch(skill_GS_CHAIN_ACTION) * 5) * 10 /100);
	}
	w_HIT_DA = w_HIT;
	if(wDA != 0 && n_A_WeaponType != weapTyp_HANDGUN){
		w_HIT_DA = w_HIT_DA * (100 + SkillSearch(skill_TH_DOUBLE_ATTACK)) /100;
		w_HIT_DA=Min(w_HIT_DA,100);
	}
// --------------------------------------------------

	w998A = 100 - wBC3_3danHatudouRitu;
	w998B = wBC3_3danHatudouRitu * w_HIT /100;
	w998C = wBC3_3danHatudouRitu - w998B;
	w998D = w998A * wDA /100;
	w998E = w998D * w_HIT_DA /100;
	w998F = w998D - w998E;
	w998G = (100-wBC3_3danHatudouRitu-w998D) * w_Cri /100;
	w998H = 100 - wBC3_3danHatudouRitu -w998D -w998G;
	w998I = w998H * w_HIT /100;
	w998J = w998H - w998I;
	w998K = w998B +w998E +w998G +w998I;
	w998L = 100 -w998K;
	
	if(n_A_ActiveSkill == skill_ALL_BASIC_ATTACK || n_A_ActiveSkill==272 || n_A_ActiveSkill==401 || (n_A_ActiveSkill==skill_AS_POISON_REACT && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))){
		w_HIT_HYOUJI = Math.floor(w998K * 100) /100;
		myInnerHtml("CRInumname","Critical Rate",0);
		myInnerHtml("CRInum",(Math.round(w998G * 100) / 100) + SubName[0][Lang],0);
	}
	
	//w_HIT = n_A_HIT - n_B_FLEE;
	w_FLEE = 100 - (n_B_HIT - n_A_FLEE);
	w_FLEE = Between(0,w_FLEE, 95);
	
	if(Taijin==0){ // not human enemy
		myInnerHtml("BattleFLEE",Math.floor((w_FLEE + (100 - w_FLEE) * n_A_LUCKY / 100) * 100) / 100,0);
		myInnerHtml("BattleHIT",w_HIT,0);
	}

// mine		
	n_Enekyori=0;

	n_A_DMG = [0,0,0];
	n_A_DMG = setBaseDmg(n_A_DMG,n_A_Weapon_zokusei);
	
	BK_n_A_DMG = [0,0,0];
	BK_n_A_DMG[0] = n_A_DMG[0];
	BK_n_A_DMG[1] = n_A_DMG[1];
	BK_n_A_DMG[2] = n_A_DMG[2];

	n_A_CriATK = [0,0,0];
	for(var i=0;i<=2;i++)
		n_A_CriATK[i] = BattleCalc4(Math.floor(n_A_DMG[2] * 140 / 100),10,0) + n_A_MasteryATK;
	
	ATKbai01(); // Get some ATK Mods (Provoke ..) to n_A_DMG
	ATKbai02(1,1); // Get other ATK Mods (baseMod, crit:noncrit)
	
	n_PerHIT_DMG = BattleCalc2(0); // NeverMissDmg
	
	var wk = [0,0,0];
	if(n_A_WeaponType == weapTyp_KATAR){
		for(var i=0;i<=2;i++){
			wk[i] = Math.floor(n_A_CriATK[i] * (0.01 + SkillSearch(skill_TH_DOUBLE_ATTACK) * 0.02));
			n_A_CriATK[i] += wk[i];
		}
		if(n_A_CriATK[0] == n_A_CriATK[2])
			myInnerHtml("CRIATK",n_A_CriATK[0] +" ("+ (n_A_CriATK[0] - wk[0]) +" + "+ wk[0] +")",0);
		else
			myInnerHtml("CRIATK",n_A_CriATK[0] +"~"+ n_A_CriATK[2] +" ("+ (n_A_CriATK[0] - wk[0]) +"~"+ (n_A_CriATK[2] - wk[2]) +" + "+ wk[0] +"~"+ wk[2] +")",0);
	}else{
		if(n_A_CriATK[0] == n_A_CriATK[2])
			myInnerHtml("CRIATK",n_A_CriATK[1],0);
		else
			myInnerHtml("CRIATK",n_A_CriATK[0] +"~"+ n_A_CriATK[2],0);
	}
	
	n_Max_DMG = 0;
	n_Min_DMG = 9999999;
	if((n_A_ActiveSkill==skill_ALL_BASIC_ATTACK  || (n_A_ActiveSkill==skill_AS_POISON_REACT && (ele_POISON*10 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < ele_HOLY*10))) && w998G > 0){
		n_Min_DMG = n_A_CriATK[0];
		n_Max_DMG = n_A_CriATK[2];
	}
	
	for(var i=0;i<=2;i++)
		n_A_CriATK[i] = Math.floor(n_A_DMG[2] * 140 / 100);
	
	BattleCalc999();
	
//	for(i=0;i<=2;i++){
//		n_A_DMG[i] = (Math.floor(n_A_DMG[i]*defReduction(n_B[en_HARDDEF])-n_B[en_SOFTDEF])+n_A_MasteryATK);
		
//		n_A_DMG[i] = Max(1,n_A_DMG[i]);
		
//		if ((n_B[en_ELEMENT] == ele_GHOST*10+3 || n_B[en_ELEMENT] == ele_GHOST*10+4) && (n_A_Weapon_zokusei == ele_NEUTRAL))
//			n_A_DMG[i] = 0;
//	}
	
//	for(var i=0;i<InnStr.length;i++)
//		myInnerHtml("strID_"+i,n_A_DMG[i],0);
	for(var i=0;i<InnStr.length;i++)
		myInnerHtml("strID_"+i,InnStr[i],0);
//	myInnerHtml("CRIATKname","Critical Damage",0);
//	myInnerHtml("CRIATK",n_A_CriATK,0);
}

function BaiCI(wBaiCI){ // % Dmg Mod - (startMod=100)
	
	if(wBCEDPch==0 && not_use_card == 0){
		
		w1=n_tok[bon_DMG_RC_FORMLESS+n_B[en_RACE]];
		wBaiCI = wBaiCI * (100+w1) /100;

		w1=n_tok[bon_DMG_ELE_NEUTRAL+Math.floor(n_B[en_ELEMENT] / 10)];
		wBaiCI = Math.floor(wBaiCI * (100+w1) /100);

		w1=n_tok[bon_DMG_SIZ_SMALL+n_B[en_SIZE]];
		wBaiCI = Math.floor(wBaiCI * (100+w1) /100);

		if(n_Enekyori==1){
			if(TyouEnkakuSousa3dan != -1){
				w1=n_tok[bon_DMG_RANGE];
				wBaiCI = Math.floor(wBaiCI * (100+w1) /100);
			}
		}

		w1=0;
		if(n_B[en_BOSS] == 1)
			w1 += n_tok[bon_DMG_BOSS];
		
		w1 += n_tok[80];
		wBaiCI = Math.floor(wBaiCI * (100+w1) /100);

		
		if(wCriTyuu==1 && n_A_ActiveSkill != 272 && n_A_ActiveSkill != 401)
			wBaiCI = Math.floor(wBaiCI * (100+ n_tok[70]) /100);

		
		if(108<=n_B[en_ID] && n_B[en_ID]<=115 || n_B[en_ID]==319)
			wBaiCI = Math.floor(wBaiCI * (100+n_tok[81]) /100);
		
		if(116<=n_B[en_ID] && n_B[en_ID]<=120)
			wBaiCI = Math.floor(wBaiCI * (100+n_tok[82]) /100);
		
		if(49<=n_B[en_ID] && n_B[en_ID]<=52 || 55==n_B[en_ID] || 221==n_B[en_ID])
			wBaiCI = Math.floor(wBaiCI * (100+n_tok[83]) /100);
		
		if(106==n_B[en_ID] || 152==n_B[en_ID] || 308==n_B[en_ID] || 32==n_B[en_ID] || 541==n_B[en_ID])
			wBaiCI = Math.floor(wBaiCI * (100+n_tok[84]) /100);

		
		wBaiCI = Math.floor(wBaiCI * (100+StPlusCalc2(1000+n_B[en_ID])+StPlusCard(1000+n_B[en_ID])) /100);

		if(SkillSearch(258))
			wBaiCI = wBaiCI * 2;
		if(SkillSearch(266))
			wBaiCI = Math.floor(wBaiCI * (150 + 50 * SkillSearch(266)) /100);
		if(n_A_ActiveSkill==skill_AS_POISON_REACT && (50 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] < 60))
			wBaiCI = Math.floor(wBaiCI * (100 + 30 * n_A_ActiveSkillLV) /100);

		
		if(n_A_WeaponType == 11 && SkillSearch(262))
			wBaiCI = Math.floor(wBaiCI * (110 + 2 * SkillSearch(262))/100);

		w1 = 0;
		if(Taijin == 0){
			if(SkillSearch(354) && SkillSearch(365))
				w1 += (n_A_BaseLV + n_A_STR + n_A_LUK + n_A_DEX) / (12 - SkillSearch(354) *3);
			else if(SkillSearch(354) && n_B[en_SIZE]==2 && n_B[en_HP] >= 17392)
				w1 += (n_A_BaseLV + n_A_STR + n_A_LUK + n_A_DEX) / (12 - SkillSearch(354) *3);
			else if(SkillSearch(352) && n_B[en_SIZE]==0)
				w1 += (n_A_BaseLV + n_A_LUK + n_A_DEX) / (12 - SkillSearch(352) *3);
			else if(SkillSearch(353) && n_B[en_SIZE]==1 && n_B[en_HP] >= 5218)
				w1 += (n_A_BaseLV + n_A_LUK + n_A_DEX) / (12 - SkillSearch(353) *3);
		}else{
			if(SkillSearch(354)){
				w1 += (n_A_BaseLV + n_A_STR + n_A_LUK + n_A_DEX) / (12 - SkillSearch(354) *3);
			}else{
				 if(SkillSearch(352)){
					w1 += (n_A_BaseLV + n_A_LUK + n_A_DEX) / (12 - SkillSearch(352) *3);
				 }else{
					 if(SkillSearch(353))
						w1 += (n_A_BaseLV + n_A_LUK + n_A_DEX) / (12 - SkillSearch(353) *3);
				}
			}
		}
		wBaiCI = Math.floor(wBaiCI * (100+w1) /100);
	}

	wBaiCI = Math.floor(tPlusDamCut(wBaiCI));

	w1=0;
	
	if(n_A_ActiveSkill == 6)
		if(n_A_SHOES_DEF_PLUS >= 9 && CardNumSearch(362))
			w1 += 10;
	if(n_A_ActiveSkill == 76)
		if(n_A_WeaponType==2 || n_A_WeaponType==3)
			w1 += 25 * CardNumSearch(464);
	if(n_A_ActiveSkill == 41)
		if(n_A_WeaponType==weapTyp_BOW)
			w1 += 50 * CardNumSearch(465);
	if(n_A_ActiveSkill == 40)
		if(n_A_Weapon_ATKplus >= 9 && EquipNumSearch(1089))
			w1 += 20;
	if(n_A_ActiveSkill == 428)
		if(n_A_Weapon_ATKplus >= 9 && EquipNumSearch(1099))
			w1 += 2 * n_A_Weapon_ATKplus;
	if(n_A_ActiveSkill == 430)
		if(n_A_Weapon_ATKplus >= 9 && EquipNumSearch(1100))
			w1 += 3 * n_A_Weapon_ATKplus;
	if(n_A_ActiveSkill == 436)
		if(n_A_Weapon_ATKplus >= 9 && EquipNumSearch(1102))
			w1 += 2 * n_A_Weapon_ATKplus;
	if(n_A_ActiveSkill == 437)
		if(n_A_Weapon_ATKplus >= 9 && EquipNumSearch(1103))
			w1 += 2 * n_A_Weapon_ATKplus;
	if(n_A_ActiveSkill == 418)
		if(EquipNumSearch(1100) || EquipNumSearch(1101) || EquipNumSearch(1102) || EquipNumSearch(1103))
			w1 += 30;
	if(n_A_ActiveSkill == 6 || n_A_ActiveSkill == 76)
		if(n_A_ActiveSkillLV == 10 && EquipNumSearch(1159))
			w1 += 50;
	if(n_A_ActiveSkill == 65)
		if(SU_LUK >= 90 && SU_DEX >= 90 && EquipNumSearch(1164))
			w1 += 15;
	if(n_A_ActiveSkill == 264)
		if(EquipNumSearch(1176) && SkillSearch(81) == 10)
			w1 += 20;
	
	if(TyouEnkakuSousa3dan == -1 && EquipNumSearch(639))
		w1 += 15;
	
	if((n_A_ActiveSkill==83 || n_A_ActiveSkill==388) && SkillSearch(381) && wBCEDPch==0)
		w1 += 10;
	
	wBaiCI = wBaiCI * (100+StPlusCalc2(5000+n_A_ActiveSkill)+StPlusCard(5000+n_A_ActiveSkill) + w1) /100;

	return wBaiCI;
}

function SkillSearch(n){ // get passive skills - (skillID) -> sLvl
	if(n==258 && TimeItemNumSearch(35))
		return 1;

	for(var k=0;JobSkillPassOBJ[n_A_JOB][k] != 999;k++){
		if(JobSkillPassOBJ[n_A_JOB][k] == n)
			return n_A_PassSkill[k];
	}
	return 0;
}

function EDPplus(HitNum){
	if(SkillSearch(266) || n_A_PassSkill2[11]){
		w_DMG[2] += EDP_DMG(2) * HitNum;
		w_DMG[1] += EDP_DMG(1) * HitNum;
		if(w_HIT_EDP == 100)
			w_DMG[0] += EDP_DMG(0) * HitNum;
		EDPhyouzi(HitNum);
	}
}

function EDPhyouzi(HitNum){
/*	if(SkillSearch(266) || n_A_PassSkill2[11]){
		var wE = 0;
		if(w_HIT_HYOUJI == 100)
			wE = 1;
		if(n_PerHIT_DMG)
			wE = 1;
		str_bSUBname += "MB/EDP Part chase(?)<BR>";
		var w0 = n_A_EDP_DMG[0] * HitNum;
		var w2 = n_A_EDP_DMG[2] * HitNum;
		if(wE)
			str_bSUB += w0 +"~"+ w2 +"(’add invocation rate(?)"+ w_HIT_EDP +"%)<BR>";
		else
			str_bSUB += w0 +"~"+ w2 +"(’add invocation rate(?)"+ (Math.floor(w_HIT * w_HIT_EDP) / 100) +"%)<BR>";
	}*/
}

function EDP_DMG(num){
	if(SkillSearch(266) || n_A_PassSkill2[11]){
		if(n_A_ActiveSkill == 17 && 52 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] <= 59)
			return 0;
		if((n_A_ActiveSkill == 66 || n_A_ActiveSkill == 193 || n_A_ActiveSkill == 197 || n_A_ActiveSkill == 321) && 83 <= n_B[en_ELEMENT] && n_B[en_ELEMENT] <= 89)
			return 0;
		if(zokusei[n_B[en_ELEMENT]][n_A_Weapon_zokusei] <= 0 && n_PerHIT_DMG == 0)
			return 0;

		if(num == 0){
			if(w_HIT_EDP == 100)
				return n_A_EDP_DMG[0];
			else
				return 0;
		}
		if(num == 1){
			var wE = 0;
			if(w_HIT_HYOUJI == 100)
				wE = 1;
			if(n_PerHIT_DMG)
				wE = 1;
			if(wE)
				return Math.floor(n_A_EDP_DMG[1] * w_HIT_EDP / 100);
			else
				return Math.floor(n_A_EDP_DMG[1] * w_HIT / 100 * w_HIT_EDP / 100);
		}
		if(num == 2)
			return n_A_EDP_DMG[2];
	}
	return 0;
}

function CastAndDelay(){ // Atk delay
	if(wCast != 0){
		str_bSUBname += SubName[9][Lang] +"<BR>";
		str_bSUB += Math.floor(wCast *100)/100 + SubName[1][Lang] +"<BR>";
	}

	var strSUB2name = "";
	var strSUB2 = "";


	wDelay = 0;
	var w = 0;
	if(n_Delay[1] > wDelay){
		wDelay = n_Delay[1];
		w = 1;
	}
	n_Delay[2] = Math.floor(n_Delay[2] * (100 - n_tok[bon_RED_CASTDELAY])) / 100;
	if(n_Delay[2] > wDelay){
		wDelay = n_Delay[2];
		w = 2;
	}
	if(n_Delay[3] > wDelay){
		wDelay = n_Delay[3];
		w = 3;
	}
	if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK && n_A_ActiveSkill != 284)
		n_Delay[4] = eval(document.calcForm.Conf01.value) /100;

	if(n_Delay[4] > (wDelay + wCast)){
		wDelay = n_Delay[4] - wCast;
		w = 4;
	}
	if(n_Delay[5] != 0){
		wDelay = n_Delay[5];
		w = 5;
	}
	if(n_Delay[6] > (wDelay + wCast)){
		wDelay = n_Delay[6] - wCast;
		w = 6;
	}

	if(w == 1){ // ASPD Delay
		if(n_A_ActiveSkill == skill_ALL_BASIC_ATTACK){
			if(SkillSearch(187)){ // Triple Strike
				strSUB2name += "Attack interval (normal)<BR>Attack Interval (Raging Trifecta Blow)<BR>";
				strSUB2 += n_Delay[1] +"s<BR>"+ sandanDelay +"s<BR>";
				wDelay = n_Delay[1] * w998A /100 + sandanDelay * wBC3_3danHatudouRitu / 100;

			}else{ // Normal Hits
				strSUB2name += "Time/Hit<BR>";
				strSUB2 += n_Delay[1] +"s<BR>";
			}
		}
		else{ // Skill with ASPD Delay
			strSUB2name += "<Font size=2>Motion Delay (ASPD Based)</Font></Font><BR>";
			strSUB2 += n_Delay[1] +"s<BR>";
		}
	}
	if(w == 2){ // Fixed Delay
		strSUB2name += "<Font size=2>Delay (Fixed Skills)</Font><BR>";
		strSUB2 += n_Delay[2] +"s<BR>";
	}
	if(w == 3){		
		if(n_A_ActiveSkill == 188 || n_A_ActiveSkill == 189 || n_A_ActiveSkill == 289){
			strSUB2name += "<Font size=2>Delay (+delay reception combo)</Font><BR>";
			strSUB2 += n_Delay[3] +"~"+ (n_Delay[3] + 0.3) +"s<BR>";
		}else{
			strSUB2name += "<Font size=2>Delay (Forced Motion)</Font><BR>";
			strSUB2 += n_Delay[3] +"s<BR>";
		}
	}
	if(w == 4){
		strSUB2name += "<Font size=2>Delay (Input Limit)</Font><BR>";
		strSUB2 += n_Delay[4] +"s<BR>";
	}
	if(w == 5){
		strSUB2name += "<Font size=2>Damage Interval</Font><BR>";
		strSUB2 += n_Delay[5] +"s<BR>";
	}
	if(w == 6){
		strSUB2name += "<Font size=2>Limited Skill-Duration(?)</Font><BR>";
		strSUB2 += (Math.floor(wDelay * 100) / 100) +"s<BR>";
	}

	myInnerHtml("bSUB2name",strSUB2name,0);
	myInnerHtml("bSUB2",strSUB2,0);
}

function tPlusDamCut(wPDC){ // some modifiers
if(Taijin == 0){
	if(n_A_PassSkill8[14] == 1){
		if(n_A_WeaponType==weapTyp_BOW||n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)
			wPDC = Math.floor(wPDC *0.6);
		else if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK)
			wPDC = Math.floor(wPDC *0.6);
		else
			wPDC = Math.floor(wPDC *0.8);

		if(n_A_PassSkill8[15])
			wPDC = Math.floor(wPDC * (10 / (n_A_PassSkill8[15] * 5)));
	}
}

if(Taijin){
	
	if(n_Ses){
// It's 20% reduction for ranged attacks aswell, not 40% -- Nvm for now!
		if(n_A_WeaponType==weapTyp_BOW||n_A_WeaponType==weapTyp_HANDGUN||n_A_WeaponType==weapTyp_RIFLE||n_A_WeaponType==weapTyp_SHOTGUN||n_A_WeaponType==weapTyp_GATLING_GUN||n_A_WeaponType==weapTyp_GRENADE_LAUNCHER)
			wPDC = Math.floor(wPDC *0.6);
		else if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK)
		//if(n_A_ActiveSkill != skill_ALL_BASIC_ATTACK)
			wPDC = Math.floor(wPDC *0.6);
		else
			wPDC = Math.floor(wPDC *0.8);
	}

	w = eval(document.calcForm.B_TAISEI0.value);
	wPDC = Math.floor(wPDC * (100-w) / 100);
	
	if(n_Enekyori || n_A_WeaponType == 10){
		w = eval(document.calcForm.B_TAISEI1.value);
		wPDC = Math.floor(wPDC * (100-w) / 100);
	}

	if(eval(document.calcForm.A_youshi.checked) == 0){
		w = eval(document.calcForm.B_TAISEI13.value);
		wPDC = Math.floor(wPDC * (100-w) / 100);
	}
	
	w = eval(document.calcForm.B_TAISEI2_1.value);
	if(n_A_Weapon_zokusei == w){
		w = eval(document.calcForm.B_TAISEI2_2.value);
		wPDC = Math.floor(wPDC * (100-w) / 100);
	}

	w = eval(document.calcForm.B_TAISEI3_1.value);
	if(n_A_Weapon_zokusei == w){
		w = eval(document.calcForm.B_TAISEI3_2.value);
		wPDC = Math.floor(wPDC * (100-w) / 100);
	}
	
	w = eval(document.calcForm.B_TAISEI5.value);
	if(w != 0 && (n_Enekyori==1 || n_A_WeaponType == 10)){
		w = 95 - eval(document.calcForm.B_TAISEI5.value) *15;
		wPDC = Math.floor(wPDC * w / 100);
	}

	w = eval(document.calcForm.B_TAISEI13.value);
	if(w > 0 && n_Enekyori != 2){
		wPDC -= Math.floor(wPDC * w * 6 / 100);
	}
}

	if(wBTw1==0){
		if(n_B_IJYOU[6] && wLAch==0) // LexA
			wPDC *= 2;
		if(n_B_IJYOU[17] && n_A_Weapon_zokusei == 3)
			wPDC *= 2;
		baizok = [110,114,117,119,120];
		if(n_A_PassSkill6[0] == 0 && n_A_PassSkill6[1] >= 1 && n_A_Weapon_zokusei == 3)
			wPDC = Math.floor(wPDC * baizok[n_A_PassSkill6[1]-1] /100);
		if(n_A_PassSkill6[0] == 1 && n_A_PassSkill6[1] >= 1 && n_A_Weapon_zokusei == 1)
			wPDC = Math.floor(wPDC * baizok[n_A_PassSkill6[1]-1] /100);
		if(n_A_PassSkill6[0] == 2 && n_A_PassSkill6[1] >= 1 && n_A_Weapon_zokusei == 4)
			wPDC = Math.floor(wPDC * baizok[n_A_PassSkill6[1]-1] /100);
	}
	if(n_B_KYOUKA[1] && Taijin==0)
		wPDC = Math.floor(wPDC / 2);
	if(n_B_KYOUKA[1] && Taijin==1)
		wPDC = Math.floor(wPDC * 2 / 3);
	if(n_B_KYOUKA[7] && n_Enekyori != 2)
		wPDC -= Math.floor(wPDC * 20 * n_B_KYOUKA[7] / 100);
	if(n_B_KYOUKA[8] && n_Enekyori == 2)
		wPDC -= Math.floor(wPDC * 20 * n_B_KYOUKA[8] / 100);

	if(n_B[en_BOSS] == 5)
		wPDC = 1;

	return wPDC;
}

function tPlusEnemyClick(){ // DisplayHumanEnemy
if(Taijin){ // Human
	n_B = new Array();
	for(i=0;i<=26;i++)
		n_B[i] = MonsterOBJ[document.calcForm.B_Enemy.value][i];

	document.calcForm.B_LV.value = n_B[en_LEVEL];
	document.calcForm.B_AGI.value = n_B[en_AGI];
	document.calcForm.B_VIT.value = n_B[en_VIT];
	document.calcForm.B_INT.value = n_B[en_INT];
	document.calcForm.B_LUK.value = n_B[en_LUK];
	document.calcForm.B_DEF.value = n_B[en_HARDDEF];
	document.calcForm.B_MDEF.value = n_B[en_HARDMDEF]; // MDef
}}

function tPlusTaiseiSyokia(){ // Init Values for PlayerEnemy
if(Taijin){ // Human
	
	for (i=1;i<=200;i++){
		document.calcForm.B_AGI.options[i-1] = new Option(i,i);
		document.calcForm.B_VIT.options[i-1] = new Option(i,i);
		document.calcForm.B_INT.options[i-1] = new Option(i,i);
		document.calcForm.B_LUK.options[i-1] = new Option(i,i);
	}
	
	for (i=0;i<=2000;){
		if (Math.floor(i * 1.05) == i)
			i++;
		i = Math.floor((i+1) * 1.1);
		
		document.calcForm.B_DEF.options[i] = new Option(i,i);
		document.calcForm.B_MDEF.options[i] = new Option(i,i);
	}
	
	for (i=1;i<=150;i++)
		document.calcForm.B_LV.options[i-1] = new Option(i,i);
	
	
	for (i=0;i<=9;i++)
		document.calcForm.B_ZOKUSEI.options[i] = new Option(ZokuseiOBJ[i]+"1",i*10+1);
	
	
	for(i=0;i<=9;i++){
		document.calcForm.B_TAISEI2_1.options[i] = new Option(ZokuseiOBJ[i],i);
		document.calcForm.B_TAISEI3_1.options[i] = new Option(ZokuseiOBJ[i],i);
	}
	
	for(i=0;i<=10;i++)
		document.calcForm.B_TAISEI4.options[i] = new Option(i,i);
	
	for(i=0;i<=5;i++)
		document.calcForm.B_TAISEI5.options[i] = new Option(i,i);
	
	for(i=0;i<=10;i++)
		document.calcForm.B_TAISEI10.options[i] = new Option(i,i);

	for(i=0;i<=5;i++)
		document.calcForm.B_TAISEI13.options[i] = new Option(EnergyCoatOBJ[i],i);

	for(i=0;i<=10;i++)
		document.calcForm.B_TAISEI14.options[i] = new Option(i,i);

	n_B = new Array();
	for(i=0;i<=26;i++)
		n_B[i] = MonsterOBJ[document.calcForm.B_Enemy.value][i];

	i = eval(document.calcForm.B_Enemy.value);
	document.calcForm.B_LV.value = MonsterOBJ[i][5];
	document.calcForm.B_VIT.value = MonsterOBJ[i][7];
	document.calcForm.B_AGI.value = MonsterOBJ[i][8];
	document.calcForm.B_INT.value = MonsterOBJ[i][9];
	document.calcForm.B_LUK.value = MonsterOBJ[i][11];
	document.calcForm.B_DEF.value = MonsterOBJ[i][14];
	document.calcForm.B_MDEF.value = MonsterOBJ[i][15];
}}

function tPlusLucky(wPL){
if(Taijin){
	w = eval(document.calcForm.B_TAISEI6.value);
	w += (n_B[en_LUK] / 10);

	w = wPL * (100-w) / 100;
	return w;
}
else{
	return wPL;
}
}

function tPlusAG(){ // Human Enemy - ranged = 2 ?
if(Taijin){
	if(n_Enekyori!=2){
		wPAG = w_AG[eval(document.calcForm.B_TAISEI10.value)];
		w_DMG[0] *= (wPAG /100);
		w_DMG[1] *= (wPAG /100);
		w_DMG[2] *= (wPAG /100);
	}
}}

