// diceroller.js

var die = 6;
var dice = 2;
var roll_1;
var roll_2;
var roll;
var loc;
var texthere;
var num_msls;
var numhits = 23;
var max;
var numhere;
var numcrits;

function dice_roll(die, dice) {
roll_1 = RandomNumber(die);
roll_2 = RandomNumber(die);
roll = roll_1 + roll_2;
document.form.die1.value = roll_1;
document.form.die2.value = roll_2;
document.form.total.value = roll;
}

function SetDice() {
	die = document.form.NumSides.value;
	dice = document.form.NumDice.value;
	document.form.dicesize.value = dice + "D" + die;

}

function rollmany() {
	var loop;
	var textmore;
	
	document.form.listing.value = "";

	die = document.form.NumSides.value;
	dice = document.form.NumDice.value;
	max = document.form.Num.selectedIndex + 2;
	document.form.listing.value = "";
	texthere = "";
	for (i=1; i<max; i++) {
//		texthere="--";
		roll_1 = RandomNumber(die);
		roll = roll_1;
		textmore = roll_1;
		for (loop=1; loop < dice; loop++) {
			roll_1 = RandomNumber(die);
			roll = roll + roll_1;
			textmore = textmore + "+" + roll_1;
		}
		// roll_1 = RandomNumber(die);
		// roll_2 = RandomNumber(die);
		// roll = roll_1 + roll_2;
		// texthere = texthere + roll_1 + "+" + roll_2 + " = ";
		textmore = textmore + " = " + roll;
		if (document.form.ShowAll.checked) {
			textmore = roll;
		}
		textmore = textmore + "\n";
		texthere = texthere + textmore;
	}
	document.form.listing.value = texthere;
}

function NumberHits(x) {
	if (x == 2) {
		switch(roll) {
			case 2: numhits = 1; break;
			case 3: numhits = 1; break;
			case 4: numhits = 1; break;
			case 5: numhits = 1; break;
			case 6: numhits = 1; break;
			case 7: numhits = 1; break;
			case 8: numhits = 2; break;
			case 9: numhits = 2; break;
			case 10: numhits = 2; break;
			case 11: numhits = 2; break;
			case 12: numhits = 2; break;
		}
	}	
	if (x == 3) {
		switch(roll) {
			case 2: numhits = 1; break;
			case 3: numhits = 1; break;
			case 4: numhits = 1; break;
			case 5: numhits = 3; break;
			case 6: numhits = 2; break;
			case 7: numhits = 2; break;
			case 8: numhits = 2; break;
			case 9: numhits = 2; break;
			case 10: numhits = 3; break;
			case 11: numhits = 3; break;
			case 12: numhits = 3; break;
		}
	}	
	if (x == 4) {
		switch(roll) {
			case 2: numhits = 1; break;
			case 3: numhits = 2; break;
			case 4: numhits = 2; break;
			case 5: numhits = 2; break;
			case 6: numhits = 2; break;
			case 7: numhits = 3; break;
			case 8: numhits = 3; break;
			case 9: numhits = 3; break;
			case 10: numhits = 3; break;
			case 11: numhits = 4; break;
			case 12: numhits = 4; break;
		}
	}	
	if (x == 5) {
		switch(roll) {
			case 2: numhits = 1; break;
			case 3: numhits = 2; break;
			case 4: numhits = 2; break;
			case 5: numhits = 3; break;
			case 6: numhits = 3; break;
			case 7: numhits = 3; break;
			case 8: numhits = 3; break;
			case 9: numhits = 4; break;
			case 10: numhits = 4; break;
			case 11: numhits = 5; break;
			case 12: numhits = 5; break;
		}
	}	
	if (x == 6) {
		switch(roll) {
			case 2: numhits = 2; break;
			case 3: numhits = 2; break;
			case 4: numhits = 3; break;
			case 5: numhits = 3; break;
			case 6: numhits = 4; break;
			case 7: numhits = 4; break;
			case 8: numhits = 4; break;
			case 9: numhits = 5; break;
			case 10: numhits = 5; break;
			case 11: numhits = 6; break;
			case 12: numhits = 6; break;
		}
	}	
	if (x == 9) {
		switch(roll) {
			case 2: numhits = 3; break;
			case 3: numhits = 3; break;
			case 4: numhits = 4; break;
			case 5: numhits = 5; break;
			case 6: numhits = 5; break;
			case 7: numhits = 5; break;
			case 8: numhits = 5; break;
			case 9: numhits = 7; break;
			case 10: numhits = 7; break;
			case 11: numhits = 9; break;
			case 12: numhits = 9; break;
		}
	}	
	if (x == 10) {
		switch(roll) {
			case 2: numhits = 3; break;
			case 3: numhits = 3; break;
			case 4: numhits = 4; break;
			case 5: numhits = 6; break;
			case 6: numhits = 6; break;
			case 7: numhits = 6; break;
			case 8: numhits = 6; break;
			case 9: numhits = 8; break;
			case 10: numhits = 8; break;
			case 11: numhits = 10; break;
			case 12: numhits = 10; break;
		}
	}
	if (x == 12) {
		switch(roll) {
			case 2: numhits = 4; break;
			case 3: numhits = 4; break;
			case 4: numhits = 5; break;
			case 5: numhits = 8; break;
			case 6: numhits = 8; break;
			case 7: numhits = 8; break;
			case 8: numhits = 8; break;
			case 9: numhits = 10; break;
			case 10: numhits = 10; break;
			case 11: numhits = 12; break;
			case 12: numhits = 12; break;
		}
	}
	if (x == 15) {
		switch(roll) {
			case 2: numhits = 5; break;
			case 3: numhits = 5; break;
			case 4: numhits = 6; break;
			case 5: numhits = 9; break;
			case 6: numhits = 9; break;
			case 7: numhits = 9; break;
			case 8: numhits = 9; break;
			case 9: numhits = 12; break;
			case 10: numhits = 12; break;
			case 11: numhits = 15; break;
			case 12: numhits = 15; break;
		}
	}
	if (x == 20) {
		switch(roll) {
			case 2: numhits = 6; break;
			case 3: numhits = 6; break;
			case 4: numhits = 9; break;
			case 5: numhits = 12; break;
			case 6: numhits = 12; break;
			case 7: numhits = 12; break;
			case 8: numhits = 12; break;
			case 9: numhits = 16; break;
			case 10: numhits = 16; break;
			case 11: numhits = 20; break;
			case 12: numhits = 20; break;
		}
	}
	if (x == 30) {
		switch(roll) {
			case 2: numhits = 10; break;
			case 3: numhits = 10; break;
			case 4: numhits = 12; break;
			case 5: numhits = 18; break;
			case 6: numhits = 18; break;
			case 7: numhits = 18; break;
			case 8: numhits = 18; break;
			case 9: numhits = 24; break;
			case 10: numhits = 24; break;
			case 11: numhits = 30; break;
			case 12: numhits = 30; break;
		}
	}
	if (x == 40) {
		switch(roll) {
			case 2: numhits = 12; break;
			case 3: numhits = 12; break;
			case 4: numhits = 18; break;
			case 5: numhits = 24; break;
			case 6: numhits = 24; break;
			case 7: numhits = 24; break;
			case 8: numhits = 24; break;
			case 9: numhits = 32; break;
			case 10: numhits = 32; break;
			case 11: numhits = 40; break;
			case 12: numhits = 40; break;
		}
	}
	return numhits;
}

function RollSRMs() {
	document.form.HitLoc0.value = "";
	document.form.TotalHits0.value = "";
	document.form.MissileRoll0.value = "";
	
	roll_1 = RandomNumber(6);
	roll_2 = RandomNumber(6);
	roll = roll_1 + roll_2;
	texthere= roll_1 + "+" + roll_2 ;
	num_msls = document.form.NumMsls0.value;
	if (document.form.Artemis0.checked) {
		texthere= texthere+ "+2";
		roll = roll + 2;
	}
	if (roll > 12) roll = 12;
	texthere = texthere + "=" + roll;
	document.form.MissileRoll0.value = texthere;
	
	numhits = NumberHits(num_msls);
	
	if (document.form.Streak0.checked) {
		numhits = num_msls;
		document.form.MissileRoll0.value = "n.a.";
	}
	document.form.TotalHits0.value = numhits + " of " + num_msls;
	texthere = ""
	do {
		numhere = 1; // numhits;
		// if (numhere > 5) numhere = 5;
		roll_1 = RandomNumber(6);
		roll_2 = RandomNumber(6);
		roll = roll_1 + roll_2;
		loc = "";
		if (document.form.Punch0.checked) {
			if (document.form.FireArc0.value == 1) GetLocFrontPunch(roll_1);
			if (document.form.FireArc0.value == 2) GetLocLeftPunch(roll_1);
			if (document.form.FireArc0.value == 3) GetLocRightPunch(roll_1);
			if (document.form.FireArc0.value == 4) GetLocRearPunch(roll_1);
		}
		else {
			if (document.form.FireArc0.value == 1) GetLocFront(roll);
			if (document.form.FireArc0.value == 2) GetLocLeft(roll);
			if (document.form.FireArc0.value == 3) GetLocRight(roll);
			if (document.form.FireArc0.value == 4) GetLocRear(roll);
		}				
		if (document.form.MechType0.value > 0) loc = ConvertQuad(loc);
		
		if (roll == 2) {
			if (document.form.Punch0.checked < 1) {
				if (document.form.Float0.checked) {
					roll_1 = RandomNumber(6);
					roll_2 = RandomNumber(6);
					if (document.form.FireArc0.value == 1) GetLocFront(roll_1+roll_2);
					if (document.form.FireArc0.value == 2) GetLocLeft(roll_1+roll_2);
					if (document.form.FireArc0.value == 3) GetLocRight(roll_1+roll_2);
					if (document.form.FireArc0.value == 4) GetLocRear(roll_1+roll_2);
				}
				loc = loc + " - ";
				roll_1 = RandomNumber(6);
				roll_2 = RandomNumber(6);
				numcrits = 0;
				switch(roll_1 + roll_2) {
	/*					case 2: numcrits = 0; break;
					case 3: numcrits = 0; break;
					case 4: numcrits = 0; break;
					case 5: numcrits = 0; break;
					case 6: numcrits = 0; break;
					case 7: numcrits = 0; break; */
					case 8: numcrits = 1; break;
					case 9: numcrits = 1; break;
					case 10: numcrits = 2; break;
					case 11: numcrits = 2; break;
					case 12: numcrits = 3; break;
				}
				loc = loc + numcrits + " crit";
				if (numcrits != 1) loc = loc + "s"
			}
		}
		texthere = texthere + numhere + " hit " + loc;
	
		texthere = texthere + "\n";
		numhits = numhits - 1;
	}
	while (numhits > 0)	
	document.form.HitLoc0.value = texthere;

}

function RollLRMs() {
	document.form.HitLoc.value = "";
	document.form.MissileRoll.value = "";
	document.form.TotalHits.value = "";


	roll_1 = RandomNumber(6);
	roll_2 = RandomNumber(6);
	roll = roll_1 + roll_2;
	texthere= roll_1 + "+" + roll_2 ;
	num_msls = document.form.NumMsls.value;
	if (document.form.Artemis.checked) {
		texthere= texthere+ "+2";
		roll = roll + 2;
	}
	if (roll > 12) roll = 12;
	texthere = texthere + "=" + roll;
	document.form.MissileRoll.value = texthere;
	
	numhits = NumberHits(num_msls);

	if (document.form.Streak.checked) {
		numhits = num_msls;
		document.form.MissileRoll.value = "n.a.";
	}
	document.form.TotalHits.value = numhits + " of " + num_msls;
	texthere = ""
	do {
		numhere = numhits;
		if (numhere > 5) numhere = 5;
		roll_1 = RandomNumber(6);
		roll_2 = RandomNumber(6);
		roll = roll_1 + roll_2;
		loc = "";
		if (document.form.Punch.checked) {
			if (document.form.FireArc.value == 1) GetLocFrontPunch(roll_1);
			if (document.form.FireArc.value == 2) GetLocLeftPunch(roll_1);
			if (document.form.FireArc.value == 3) GetLocRightPunch(roll_1);
			if (document.form.FireArc.value == 4) GetLocRearPunch(roll_1);
		}
		else {
			if (document.form.FireArc.value == 1) GetLocFront(roll);
			if (document.form.FireArc.value == 2) GetLocLeft(roll);
			if (document.form.FireArc.value == 3) GetLocRight(roll);
			if (document.form.FireArc.value == 4) GetLocRear(roll);
		}				
		if (document.form.MechType.value > 0) loc = ConvertQuad(loc);
		
		if (roll == 2) {
			if (document.form.Punch.checked < 1) {
				if (document.form.Float.checked) {
					roll_1 = RandomNumber(6);
					roll_2 = RandomNumber(6);
					if (document.form.FireArc.value == 1) GetLocFront(roll_1+roll_2);
					if (document.form.FireArc.value == 2) GetLocLeft(roll_1+roll_2);
					if (document.form.FireArc.value == 3) GetLocRight(roll_1+roll_2);
					if (document.form.FireArc.value == 4) GetLocRear(roll_1+roll_2);
				}
				loc = loc + " - ";
				roll_1 = RandomNumber(6);
				roll_2 = RandomNumber(6);
				numcrits = 0;
				switch(roll_1 + roll_2) {
	/*					case 2: numcrits = 0; break;
					case 3: numcrits = 0; break;
					case 4: numcrits = 0; break;
					case 5: numcrits = 0; break;
					case 6: numcrits = 0; break;
					case 7: numcrits = 0; break; */
					case 8: numcrits = 1; break;
					case 9: numcrits = 1; break;
					case 10: numcrits = 2; break;
					case 11: numcrits = 2; break;
					case 12: numcrits = 3; break;
				}
				loc = loc + numcrits + " crit";
				if (numcrits != 1) loc = loc + "s"
			}
		}
		texthere = texthere + numhere + " dmg " + loc;
	
		texthere = texthere + "\n";
		numhits = numhits - 5;
	}
	while (numhits > 0)	
	document.form.HitLoc.value = texthere;

}

function RandomNumber(max) {
	var result;
	result = Math.floor(Math.random() * max) + 1;
	return result;
}

function GetLocFrontPunch(roll) {
	switch(roll) {
		case 1: loc = "LA"; break;
		case 2: loc = "LT"; break;
		case 3: loc = "CT"; break;
		case 4: loc = "RT"; break;
		case 5: loc = "RA"; break;
		case 6: loc = "HD"; break;
	}
}

function GetLocLeftPunch(roll) {
	switch(roll) {
		case 1: loc = "LT"; break;
		case 2: loc = "LT"; break;
		case 3: loc = "CT"; break;
		case 4: loc = "LA"; break;
		case 5: loc = "LA"; break;
		case 6: loc = "HD"; break;
	}
}

function GetLocRightPunch(roll) {
	switch(roll) {
		case 1: loc = "RT"; break;
		case 2: loc = "RT"; break;
		case 3: loc = "CT"; break;
		case 4: loc = "RA"; break;
		case 5: loc = "RA"; break;
		case 6: loc = "HD"; break;
	}
}

function GetLocRearPunch(roll) {
	switch(roll) {
		case 1: loc = "LA"; break;
		case 2: loc = "LT-R"; break;
		case 3: loc = "CT-R"; break;
		case 4: loc = "RT-R"; break;
		case 5: loc = "RA-R"; break;
		case 6: loc = "HD"; break;
	}
}

function GetLocFront(roll) {
	switch(roll) {
		case 2: loc = "CT"; break;
		case 3: loc = "RA"; break;
		case 4: loc = "RA"; break;
		case 5: loc = "RL"; break;
		case 6: loc = "RT"; break;
		case 7: loc = "CT"; break;
		case 8: loc = "LT"; break;
		case 9: loc = "LL"; break;
		case 10: loc = "LA"; break;
		case 11: loc = "LA"; break;
		case 12: loc = "HD"; break;
	}
}

function GetLocRight(roll) {
	switch(roll) {
		case 2: loc = "RT"; break;
		case 3: loc = "RL"; break;
		case 4: loc = "RA"; break;
		case 5: loc = "RA"; break;
		case 6: loc = "RL"; break;
		case 7: loc = "RT"; break;
		case 8: loc = "CT"; break;
		case 9: loc = "LT"; break;
		case 10: loc = "LA"; break;
		case 11: loc = "LL"; break;
		case 12: loc = "HD"; break;
	}
}

function GetLocLeft(roll) {
	switch(roll) {
		case 2: loc = "LT"; break;
		case 3: loc = "LL"; break;
		case 4: loc = "LA"; break;
		case 5: loc = "LA"; break;
		case 6: loc = "LL"; break;
		case 7: loc = "LT"; break;
		case 8: loc = "CT"; break;
		case 9: loc = "RT"; break;
		case 10: loc = "RA"; break;
		case 11: loc = "RL"; break;
		case 12: loc = "HD"; break;
	}
}

function GetLocRear(roll) {
	switch(roll) {
		case 2: loc = "CT-R"; break;
		case 3: loc = "RA"; break;
		case 4: loc = "RA"; break;
		case 5: loc = "RL"; break;
		case 6: loc = "RT-R"; break;
		case 7: loc = "CT-R"; break;
		case 8: loc = "LT-R"; break;
		case 9: loc = "LL"; break;
		case 10: loc = "LA"; break;
		case 11: loc = "LA"; break;
		case 12: loc = "HD"; break;
	}
}

function ConvertQuad(loc) {
	switch(loc) {
		case "LA": loc = "LFL"; break;
		case "RA": loc = "RFL"; break;
		case "LL": loc = "LRL"; break;
		case "RL": loc = "RRL"; break;
	}
	return loc;
}

