Framestep:

Count for how long in stage
Count for lights
Count for reaction time

Count for how long in stage:
Once "staged" (vehicle in stage eventbox), begin count for activation of tree. Timer = 2 seconds

Count for lights:
In prototype version, 3 lights. Each lasting .500 second.
Once tree activated, set counter lights to 3. On each .500 second loop, decrement lights.

Count for reaction time:
Counts from time of last light activation. Reported reaction time = reaction time - .500
Reported to thousandths place precision.

Checkpoints probably need some adjustments.

Run through how it should go (desk check maybe?):
[We assume the game runs at a smooth 60 frames per second.]

Initial variable state
	TREE_TIME = 2.00
	LIGHT_TIME = 0.500
	LIGHTS_TOTAL = 3
	treeTimer = 0.00
	lights = LIGHTS_TOTAL
	reactionTime = 0.00
	staged = false
	prestaged = false
	ready = false
	interval = 0.00
	left = false
Player drives up to starting line
Player touches pre-stage box
Event for pre-stage box triggered
	prestaged = true
	game logs "Prestaged"
Player rolls forward, touches stage box
Event for stage box triggered
	staged = true
	game logs "Staged"
frameStep for stageTimer activates.
	x60:
treeTimer reaches 2
ready = true;
game logs "Ready"
lights = LIGHTS_TOTAL (in this case 3)
game logs "Lights set to " + LIGHTS_TOTAL (in this case, "Lights set to 3")
frameStep for lightsTimer activates

The basic system being done now, I'd like to turn my attention to adapting this for multiplayer, which is the other big goal of this project.
I've got a startTree method that manually activates the tree on command now, but I need more customization.
Ideally the player operating as the "starter" in multiplayer should be able to specify the following:
Amount of lights
Interval between lights
Whether the race will be heads-up, bracket, or index
If bracket:
Dial-in for the left side
Dial-in for the right side
If index:
The index to be run

Ideally the "support for bracket racing" thing should be an addon to the individual players' experience. The script should notify a player if they broke out (went faster than the dial-in/index).

So maybe a command with the following form:

actually nope. How about a separate setupTree command that handles all of those options, then a simple startTree command for when the "starter" wants to start a race?

So *setupTree* could take these parameters then:
setupTree(int numLights, float interval, bool dialIns, float dialInLeft, float dialInRight)

Then just startTree()

Oh, oh, and a setupLanes(int uidLeft, int uidRight) for setting up to which games the setupTree and startTree commands should be sent.

So the sequence should be setupLanes -> setupTree -> startTree

A bit more refactoring: it doesn't make much sense to use the parameters in setupTree as they are currently. There's no reason why a player should need the information after the interval.
So, I've decided to make setupTree *just* set information related to the tree, and make a setDialIn() function to address the dial-ins.
By default I'm making the dial-in 0.000. This value will disable the breakout feature entirely.
If the dial-in is set greater than 0.000, then the breakout check will activate and notify the driver if they've broken out on their time slip.
