Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CLEARSCREEN.
- lights off.
- SET SHIP:CONTROL:PILOTMAINTHROTTLE TO 0.
- PRINT "Countdown: -T 5 Sec".
- WAIT 4.
- FROM {local countdown is 10.} UNTIL countdown = 0 STEP {SET countdown to countdown - 1.} DO {
- PRINT "..." + countdown.
- WAIT 1.
- CLEARSCREEN.
- }
- LOCK THROTTLE TO 0.5.
- STAGE.
- WAIT 1.
- STAGE.
- PRINT "LIFT OFF!".
- lock steering to lookdirup(heading(90,85):vector, ship:facing:topvector).
- WAIT UNTIL SHIP:ALTITUDE > 3000.
- PRINT "Steering".
- lock steering to lookdirup(heading(90,80):vector, ship:facing:topvector).
- WAIT UNTIL SHIP:ALTITUDE > 4000.
- PRINT "Steering".
- lock steering to lookdirup(heading(90,75):vector, ship:facing:topvector).
- WAIT UNTIL SHIP:ALTITUDE > 5000.
- PRINT "Steering".
- lock steering to lookdirup(heading(90,70):vector, ship:facing:topvector).
- WAIT UNTIL SHIP:ALTITUDE > 6000.
- PRINT "Steering".
- lock steering to lookdirup(heading(90,65):vector, ship:facing:topvector).
- WAIT 3.
- PRINT "Waiting boosters flameout...".
- WAIT UNTIL STAGE:SOLIDFUEL < 0.1.
- lock steering to lookdirup(heading(90,45):vector, ship:facing:topvector).
- STAGE.
- PRINT "Boosters Ejected".
- RCS ON.
- PRINT "RCS ON".
- LOCK THROTTLE TO 0.6.
- PRINT "Accelerating".
- WAIT 5.
- LOCK THROTTLE TO 0.7.
- PRINT "Accelerating".
- WAIT 5.
- LOCK THROTTLE TO 0.8.
- PRINT "Accelerating".
- WAIT UNTIL SHIP:ALTITUDE > 30000.
- lock steering to lookdirup(heading(90,40):vector, ship:facing:topvector).
- PRINT "Steering".
- WAIT UNTIL SHIP:ALTITUDE > 32500.
- lock steering to lookdirup(heading(90,35):vector, ship:facing:topvector).
- PRINT "Steering".
- WAIT UNTIL SHIP:ALTITUDE > 35000.
- lock steering to lookdirup(heading(90,35):vector, ship:facing:topvector).
- PRINT "Steering".
- WAIT UNTIL SHIP:ALTITUDE > 37500.
- lock steering to lookdirup(heading(90,30):vector, ship:facing:topvector).
- PRINT "Steering a little more...".
- WAIT UNTIL SHIP:ALTITUDE > 40000.
- lock steering to lookdirup(heading(90,27):vector, ship:facing:topvector).
- PRINT "Still steering".
- WAIT UNTIL SHIP:ALTITUDE > 42500.
- lock steering to lookdirup(heading(90,25):vector, ship:facing:topvector).
- PRINT "End of turn".
- PRINT "Waiting apoapsis...".
- WAIT UNTIL SHIP:APOAPSIS > 100000.5.
- LOCK THROTTLE TO 0.0.
- PRINT "100km Apoapsis reached".
- WAIT 3.
- lock steering to prograde.
- PRINT "Steering to prograde".
- WAIT 14.
- PRINT "Ejecting external fueltank".
- STAGE.
- // something to turn off main engines
- PRINT "Turning off Main engine and setup rest".
- set engList to ship:partstagged("ME1").
- for eng in engList { set eng:thrustlimit to 0.0. }.
- set engList to ship:partstagged("ME2").
- for eng in engList { set eng:thrustlimit to 24.0. }.
- set engList to ship:partstagged("ME3").
- for eng in engList { set eng:thrustlimit to 24.0. }.
- WAIT 1.
- PRINT "Done".
- PRINT "waiting to exit atmosphere...".
- WAIT UNTIL SHIP:ALTITUDE > 70000.
- PRINT "Calculating maneuver node".
- WAIT 3.
- declare parameter alt.
- // create apoapsis maneuver node
- print "T+" + round(missiontime) + " Apoapsis maneuver, orbiting " + body:name.
- print "T+" + round(missiontime) + " Apoapsis: " + round(apoapsis/1000) + "km".
- print "T+" + round(missiontime) + " Periapsis: " + round(periapsis/1000) + "km -> " + round(alt/1000) + "km".
- // present orbit properties
- set vom to velocity:orbit:mag. // actual velocity
- set rb to body:radius. // missed lane
- set r to rb + altitude. // actual distance to body
- set ra to rb + apoapsis. // radius in apoapsis
- set va to sqrt( vom^2 + 2*body:mu*(1/ra - 1/r) ). // velocity in apoapsis fixed
- // set va to sqrt( vom^2 + 2 * mu * (1/ra - 1/r) ). // velocity in apoapsis
- set a to (periapsis + 2 * rb + apoapsis)/2. // semi major axis present orbit
- // future orbit properties
- set r2 to rb + apoapsis. // distance after burn at apoapsis
- set a2 to (alt + 2 * rb + apoapsis)/2. // semi major axis target orbit
- set v2 to sqrt( vom^2 + (body:mu * (2/r2 - 2/r + 1/a - 1/a2 ) ) ).
- // setup node
- set deltav to v2 - va.
- print "T+" + round(missiontime) + " Apoapsis burn: " + round(va) + ", dv:" + round(deltav) + " -> " + round(v2) + "m/s".
- set nd to node(time:seconds + eta:apoapsis, 0, 0, deltav).
- add nd.
- print "T+" + round(missiontime) + " Node created.".
- WAIT 4.
- PRINT "Node Confirmed".
- WAIT 2.
- PRINT "Prepairing for burn".
- // set nd to nextnode(x).
- print "Node in: " + round(nd:eta) + ", DeltaV: " + round(nd:deltav:mag).
- set max_acc to ship:AVAILABLETHRUST/ship:mass.
- set burn_duration to nd:deltav:mag/max_acc.
- print "Crude Estimated burn duration: " + round(burn_duration) + "s".
- wait until nd:eta <= (burn_duration/2 + 60). // nd or node
- lock steering to np.
- set np to nd:deltav.
- set npd to np:direction. // another missing line
- // wait until abs(np:pitch - facing:pitch) < 0.15 and abs(np:yaw - facing:yaw) < 0.15.
- wait until abs(npd:pitch - facing:pitch) < 0.1 and abs(npd:yaw - facing:yaw) < 0.1.
- wait until nd:eta <= (burn_duration/2). // nd or node
- set tset to 0.
- lock throttle to tset.
- set done to False.
- set dv0 to nd:deltav.
- until done
- {
- set max_acc to ship:AVAILABLETHRUST/ship:mass.
- set tset to min(nd:deltav:mag/max_acc, 1).
- if vdot(dv0, nd:deltav) < 0
- {
- print "End burn, remain dv " + round(nd:deltav:mag,1) + "m/s, vdot: " + round(vdot(dv0, nd:deltav),1).
- lock throttle to 0.
- break.
- }
- //we have very little left to burn, less then 0.1m/s
- if nd:deltav:mag < 0.1
- {
- print "Finalizing burn, remain dv " + round(nd:deltav:mag,1) + "m/s, vdot: " + round(vdot(dv0, nd:deltav),1).
- //we burn slowly until our node vector starts to drift significantly from initial vector
- //this usually means we are on point
- wait until vdot(dv0, nd:deltav) < 0.5.
- lock throttle to 0.
- print "End burn, remain dv " + round(nd:deltav:mag,1) + "m/s, vdot: " + round(vdot(dv0, nd:deltav),1).
- set done to True.
- }
- }
- unlock steering.
- unlock throttle.
- wait 1.
- //we no longer need the maneuver node
- remove nd.
- lock steering to prograde.
- PRINT "Welcome to orbit".
- WAIT 4.
- PRINT "Lights on, debloying solar panels".
- panels on.
- lights on.
- WAIT 4.
- PRINT "You may open cargo bay now".
- unlock steering.
- WAIT 4.
- Print "Full control return".
- SAS ON.
- set engList to ship:partstagged("ME1").
- for eng in engList { set eng:thrustlimit to 0.0. }.
- set engList to ship:partstagged("ME2").
- for eng in engList { set eng:thrustlimit to 5.0. }.
- set engList to ship:partstagged("ME3").
- for eng in engList { set eng:thrustlimit to 5.0. }.
- print "Good bye!".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement