sumguytwitches

silver water takeoff

Apr 14th, 2023 (edited)
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. lock liquidmatched to min(ship:oxidizer * 9 / 11, ship:liquidfuel).
  2. lock NukeLiquid to max(0, ship:liquidfuel-liquidmatched).
  3. lock nukedv to Round(800 * 9.81 * ln(ship:mass / (ship:mass - (NukeLiquid * 0.005))), 5).
  4.  
  5. lock oxidizermatched to min(ship:oxidizer, ship:liquidfuel * 11 / 9).
  6. lock vectordv to Round(315 * 9.81 * ln((ship:mass - (NukeLiquid * 0.005)) / ((ship:mass - (NukeLiquid * 0.005)) - (liquidmatched * 0.005) - (oxidizermatched * 0.005))), 5).
  7.  
  8. bays off. brakes off. rcs on.
  9. function SetEngines {
  10. parameter targetMode to "Activate Engine".
  11. parameter engines to ship:partsdubbedpattern("vector").
  12. for engine in engines {
  13. if engine:hasmodule("ModuleEnginesFx") set m to engine:getmodule("ModuleEnginesFx").
  14. if engine:hasmodule("ModuleEngines") set m to engine:getmodule("ModuleEngines").
  15. if m:hasaction(targetMode) m:doaction(targetMode, true).
  16. }
  17. }
  18.  
  19. function ThrustLimit {
  20. parameter targetEngines.
  21. parameter targetThrust.
  22. for eng in targetEngines set eng:thrustlimit to targetThrust.
  23. }
  24.  
  25. function SetAngle {
  26. parameter targetangle.
  27. for s in servos if s:hasfield("target angle") s:setfield("target angle", targetangle).
  28. }
  29.  
  30. function info {
  31. parameter message.
  32.  
  33. set logmessage to round(missionTime,1) + ": " + message.
  34. print logmessage.
  35. }
  36.  
  37.  
  38. copypath("0:","1:").
  39. for i in range(terminal:height-3) Print "":padright(terminal:width).
  40.  
  41. set steeringmanager:rollcontrolanglerange to 180.
  42.  
  43. set takeoffspeed to 100.
  44. set targetOrbitAltitude to 101e3.
  45.  
  46. set vectors to ship:partsdubbedpattern("vector").
  47. set nukes to ship:partsdubbedpattern("nuc").
  48. set servos to ship:modulesnamed("ModuleRoboticRotationServo").
  49. lock p to choose 0 if airspeed < takeoffspeed else min(25,max(0,groundspeed/7.5)).
  50. lock steering to heading(270,p).
  51.  
  52. SetEngines("Activate Engine", vectors).
  53. lock throttle to targetOrbitAltitude-apoapsis.
  54. lock angletarget to 0.
  55. when altitude > 15 then {
  56. gear off.
  57. info("engage dynamic servo").
  58. lock angletarget to max(0, min(90,100 - ((-verticalspeed + (20-altitude)/1.5)*100))).
  59. //set p to 10.
  60. }
  61.  
  62. info("initialize vtols").
  63. lock vlimit to (-verticalspeed + (20-altitude))*100.
  64. set vlimitcopy to vlimit.
  65. set anglecopy to angletarget.
  66.  
  67. when abs(vang(ship:facing:vector, heading(270,0):vector)) < 5 then {
  68. SetEngines("Activate Engine", ship:partsdubbedpattern("turbofan")).
  69. }
  70.  
  71. until vlimit < 0 and airspeed > 100 {
  72. set vlimitcopy to vlimit.
  73. set anglecopy to angletarget.
  74. ThrustLimit(vectors, vlimitcopy).
  75. //SetAngle(anglecopy).
  76. print " v thrust: " + vlimitcopy at (0,0).
  77. print "servo angle: " + anglecopy at (0,1).
  78. print " p: " + p at (0,2).
  79. wait 0.
  80. }
  81.  
  82. info("store vtols").
  83. SetEngines("Shutdown Engine", vectors).
  84.  
  85. SetAngle(90).
  86. print " v thrust: " + vlimitcopy at (0,0).
  87. print "servo angle: " + anglecopy at (0,1).
  88. info("gain speed").
  89. lock aoa to vang(srfprograde:vector, ship:facing:vector).
  90. lock p to max(aoa+0.5,min(45, aoa+(airspeed-400)/5 )).
  91. fuelcells on.
Add Comment
Please, Sign In to add comment