clearscreen. Set ln to 0. Set lt to 0. set flag1 to 0. set t to 1. Print "EXECUTING PROGRAM...". Print "Rover Landing by check.". Print "".
//Launch program
lock steering to up + R(0,0,180). lock throttle to 1. Print missiontime + " Launching...". Stage.
// Rolls rocket 90 degrees... for fun. Useful in some situations
Wait until alt:radar > 200. Lock steering to up + R(0,0,270). Print missiontime + " ROLL Prog.".
//While in flight, auto throttles based on current velocity vs ideal velocity. If current vertical speed // > ideal velocity, throttle down, else throttle up. // When boosters are drained, ditched them.
Until altitude > 8000 {
if verticalspeed > 102.9 * (1.0001005^altitude) {
set t to t - 0.05.}.
if verticalspeed < 102.9 * (1.0001005^altitude) {
set t to t + 0.05.}.
//So when the rocket has < 450 fuel, it means the boosters are dry, so stage. BUT you only want to stage once, // so that's where the flag comes in. after you staged once, change the flag value so you don't stage again.
If stage:liquidfuel < 450 AND flag1 = 0 { stage. set t to 1. set flag1 to 1. Print missiontime + " Booster Separation.". }. If t < 0 {set t to 0.}. If t > 1 {set t to 1.}. Lock throttle to t. }. Lock throttle to 1.
// Gravity turn
Lock steering to up + R(-45,1,180). Print missiontime + " Gravity turn.". Wait until stage:liquidfuel = 0. Stage. Lock throttle to 0. // Ditch the booster when it's dry.
Print missiontime + " Stage 1 Sep.".
// Coast past apoapsis and reorient retrograde the craft when it's below 7500 m.
Wait until verticalspeed < 0 AND altitude < 75000.
Lock steering to retrograde +R(0,0,180).
// deploy the chute at 8000m and unlock the steering
Wait until altitude <8000. Stage. Print missiontime+ " Drogue Deployed". Unlock steering.
// jettison the heatsheild at 2200m Wait until alt:radar < 2200 and alt:radar > -1. Stage. Print missiontime + " HEATSHEILD Sep.". Wait until alt:radar < 1000. stage. // detach from chute/backshell at 1000m
Print missiontime + " BACKSHELL Sep.". Wait 1. // deviate by 10 degrees (yaw / roll?) + 45 degrees pitch and fire engines. Numbers kind of arbitrary. mostly wanted // to test the horizontal velocity killing technique. // This is to move away from the parachute/backshell and not have it land on us later.
Lock steering to up + R(10,45,180). Wait 1. Lock throttle to 0.3. Stage. Print missiontime + " Deviation mnvr.". wait 2.
// Measures horizontal 'velocity' direction (not magnitude) and pitches/rolls the craft to compensate. // If longitude/latitude is increasing/decreasing, roll to fire engine in the opposite direction. // orient UP when surface velocity is < 1m/s.
Until surfacespeed < 1 OR alt:radar < 510{ Set long1 to longitude. Set long2 to longitude. Set lat1 to latitude. Set lat2 to latitude. If long2 < long1 {set ln to -15.}. If long2 > long1 {set ln to 15.}.
If lat2 < lat1 {set lt to -15.}. If lat2 > lat1 {set lt to 15.}.
if abs(lat2-lat1) < 0.000005 {set lt to 0.}. if abs(long2-long1) < 0.000005 {set ln to 0.}. Lock steering to up + R(lt,ln,180). }.
Set ln to 0. Set lt to 0.
Lock throttle to 0. lock steering to up + R(0,0,180).
// After 500 m, fire the throttle at 1.8 Gs.
Wait until alt:radar < 500.
Print missiontime + " Approach.".
Lock throttle to (1.8 * 9.81 * mass/maxthrust).
// wait until veritcal speed >-30.... self explainitory. Wait until verticalspeed >-30.
// Adjust throttle to either 1.7Gs or 1.0 Gs depending on if vertical speed is <-15 m/s or >-10 m/s until 120 m
Until alt:radar < 120 { If verticalspeed <-15 {Lock throttle to (1.7 * 9.81 * mass/maxthrust).}. If verticalspeed >-10 {Lock throttle to (9.81 * mass/maxthrust).}. }.
// Adjust throttle to either 1.4Gs or 1.1 Gs depending on if vertical speed is <-3 m/s or >-1 m/s until 2.5 m // Adjust pitch/roll based on horizontal velocity direction, like in deviation mod but with finer adjustments
Print missiontime + " Final approach.".
Until alt:radar < 2.5 {
Set long1 to longitude. Set long2 to longitude. Set lat1 to latitude. Set lat2 to latitude. If long2 < long1 {set ln to -2.}. If long2 > long1 {set ln to 2.}.
If lat2 < lat1 {set lt to -2.}. If lat2 > lat1 {set lt to 2.}.
if abs(lat2-lat1) < 0.000005 {set lt to 0.}. if abs(long2-long1) < 0.000005 {set ln to 0.}.
Lock steering to up + R(lt,ln,180).
If verticalspeed <-3 {Lock throttle to (1.4 * 9.81 * mass/maxthrust).}. If verticalspeed >-1 {Lock throttle to (1.1* 9.81 * mass/maxthrust).}. }.
// At 2.5 m, pitch over 5 degrees, lock throttle to 2Gs, put the brakes on the rover wheels, jettison the skycrane.
Lock steering to up+R(-5,0,180).
Lock throttle to (2 * 9.81 * mass/maxthrust). Brakes on. Stage. Lock throttle to 0. Unlock throttle. Unlock steering. Wait 5.
// After 5 seconds, open the com dish and extend the antennae.
Toggle AG1. Print missiontime +" Landed.".