function info { parameter message. set logmessage to round(missionTime,1) + ": " + message. print logmessage. } set takeoffspeed to 100. set targetOrbitAltitude to 101e3. set steeringmanager:rollcontrolanglerange to 180. set vectors to ship:partsdubbedpattern("vector"). for v in vectors set v:thrustlimit to 0. set servos to ship:modulesnamed("ModuleRoboticRotationServo"). lock p to choose 0 if airspeed < takeoffspeed else min(20,max(0,groundspeed/7.5)). set h to 90. lock steering to heading(h,p). toggle ag2. lock throttle to targetOrbitAltitude-apoapsis. lock angletarget to 0. when altitude > 72 then { info("engage dynamic servo"). lock angletarget to max(0, min(90,100 - ((-verticalspeed + (80-altitude)/1.5)*100))). gear off. } toggle ag1. info("initialize vtols"). lock vlimit to (-verticalspeed + (80-altitude))*100. until vlimit < 0 { set vlimitcopy to vlimit. set anglecopy to angletarget. for v in vectors set v:thrustlimit to vlimitcopy. for s in servos if s:hasfield("target angle") s:setfield("target angle", anglecopy). print " v thrust: " + vlimitcopy at (0,0). print "servo angle: " + anglecopy at (0,1). wait 0. } info("store vtols"). toggle ag2. for s in servos if s:hasfield("target angle") s:setfield("target angle", 90). print " v thrust: " + vlimitcopy at (0,0). print "servo angle: " + anglecopy at (0,1). bays off. info("gain speed"). lock p to 9.6.