Put the timeout in StopFire instead of Ready - it's the one that transitions on timeout anyway.
stateName[0] = "Activate"; stateTransitionOnTriggerDown[0] = "PreFire"; stateAllowImageChange[0] = true; stateTransitionOnTimeout[0] = "Ready"; stateName[1] = "Ready"; stateTransitionOnTriggerDown[1] = "PreFire"; stateTimeoutValue[1] = 0.1; stateAllowImageChange[1] = true; stateName[2] = "PreFire"; stateTransitionOnAmmo[2] = "Fire"; stateTransitionOnNoAmmo[2] = "StopFire"; stateAllowImageChange[2] = "true"; stateName[3] = "Fire"; stateTransitionOnTriggerUp[3] = "StopFire"; stateTransitionOnNoAmmo[3] = "StopFire"; stateTransitionOnTimeout[3] = "Fire"; stateTimeoutValue[3] = 0.01; stateWaitForTimeout[3] = true; stateFire[3] = true; stateAllowImageChange[3] = true; stateScript[3] = "onFire"; stateEmitter[3] = FlashlightEmitter; stateEmitterTime[3] = 0.07; stateSequence[3] = "fire"; stateName[4] = "StopFire"; stateTimeoutValue[4] = 0.2; stateTransitionOnTimeout[4] = "Ready"; stateWaitForTimeout[4] = true; stateAllowImageChange[4] = true; stateSequence[4] = "StopFire";