Simple Array Index Out of Bounds on Hardcoded array

This is probably something very simple, but I don’t understand it at all. Curently I’m getting the index out of bounds at the battleSkills[2] call, line 12.

public void StartBattle () {

	var crystal = transform.GetComponent ("BaseCrystal") as BaseCrystal;
	battleSkills = crystal.battleSkills;
	if (battleSkills[0] != null) {
		var skill = Camera.main.GetComponent (battleSkills[0]) as BattleSkill;
		attackDescrip1 = skill.description; 
	}
	if (!string.IsNullOrEmpty(battleSkills[1])) {
		var skill = Camera.main.GetComponent (battleSkills[1]) as BattleSkill;
		attackDescrip2 = skill.description; 
	}

    if (!string.IsNullOrEmpty(battleSkills[2])) {

		var skill = Camera.main.GetComponent (battleSkills[2]) as BattleSkill;
		attackDescrip3 = skill.description;
		}
		selected = true;
		selectCommand = true;
	}

private string battleSkills = new string[2]; (as being defined in this class)

public string battleSkills = new string[2]; (as defined in baseCrystal)

lightStarter, which overrides baseCrystal defines only battleSkills[0] = “Microwave”;

This array clearly goes that high, if it were just that it was empty or null at this point, that would be one thing, but why is it passing the call for battleSkills[1]? I don’t understand how/why this is throwing this error.

If you define an array, count for it starts from zero. For example if you have an array is size of 2, you have two elements which can be accessed by array[0] and array[1], there is no array[2].
So an option for you is to just increase the array size by 1 when you define it.