Advertisement
sumguytwitches

Hathi IV Boost to air breathing

Aug 22nd, 2023
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function info {
  2. parameter message.
  3. print char(7).
  4. set logmessage to round(missionTime,1):tostring():padleft(6) + ": " + message.
  5. print logmessage.
  6. }
  7.  
  8. for rap in ship:partsdubbedpattern("rapier") turbos:add(rap).
  9. for m in ship:modulesnamed("WBIModuleGeneratorFX") if m:hasevent("activate fusion power") m:doevent("activate fusion power").
  10. set steeringmanager:rollcontrolanglerange to 180.
  11. set proprad to 5.8.
  12. set complete to false.
  13. set chaseSpeed to 350.
  14. set turboSpeed to 300.
  15. set rotormods to ship:modulesnamed("ModuleRoboticServoRotor").
  16. set rotors to list().
  17. for rm in rotormods {
  18. local rotor to lexicon().
  19. if(rm:getfield("motor") <> "Unpowered")
  20. {
  21. set rotor["part"] to rm:part.
  22. set rotor["mod"] to rm.
  23. if rotor:part:parent:name:contains("bay") {
  24. set baymod to rotor:part:parent:getmodule("ModuleAnimateGeneric").
  25. if baymod:hasevent("open") baymod:doevent("open").
  26. }
  27.  
  28. set rotor["blades"] to list().
  29. for bm in rm:part:ModulesNamed("ModuleControlSurface") {
  30. local b to bm:part.
  31.  
  32. local blade to lexicon().
  33. set blade["mod"] to bm.
  34. set blade["offset"] to vdot(-b:Facing:starvector, b:position - b:parent:position).
  35. set blade["proprad"] to proprad.
  36.  
  37. bm:setfield("deploy", true).
  38.  
  39. rotor["blades"]:add(blade).
  40. }
  41.  
  42. rotors:add(rotor).
  43. if rm:hasfield("torque limit(%)") rm:setfield("torque limit(%)", 100).
  44. }
  45. }
  46. lock rpmtarget to min(459,max(0, throttle * 460)).
  47.  
  48. set props to true.
  49.  
  50. on round(time:seconds * 20) {
  51. if props {
  52. set rpmcopy to rpmtarget.
  53. for rotor in rotors {
  54.  
  55. rotor:mod:setfield("rpm limit", rpmcopy ).
  56. set calcAirspeed to (2 * constant:pi * (rotor:blades[0]:proprad + rotor:blades[0]:offset) * rpmcopy/60).
  57. set deploycopy to max(3, 4.5 + arctan2(airspeed, calcAirspeed)).
  58. for blade in rotor:blades {
  59. blade:mod:setfield("deploy angle", deploycopy).
  60. }
  61. }
  62. }
  63.  
  64. return props.
  65. }
  66. set x to 90. lock p to 0.
  67. lock steering to heading(x,p).
  68. brakes on.
  69. bays on.
  70. wait 4.
  71. brakes off.
  72. lock throttle to 1.
  73. SetAngle(15).
  74. startup(vectors).
  75. startup(turbos).
  76. when airspeed > 90 then {
  77. info("takeoff").
  78. set p to 10.
  79. }
  80. when airspeed > 110 then {
  81. info("climb").
  82. set p to 20.
  83. setangle(25).
  84. }
  85. when airspeed > 150 then {
  86. info("vector full push").
  87. setangle(90).
  88. set p to 40.
  89. gear off.
  90. }
  91.  
  92.  
  93.  
  94. when apoapsis > 900 then {
  95. info("will clear mountain, locking to surface prograde").
  96. lock p to max(10,vang(srfprograde:vector,heading(90,0):vector)).
  97. }
  98.  
  99. when airspeed > 300 then {
  100. info("put away props").
  101. set props to false.
  102.  
  103. for rotor in rotors {
  104. rotor:mod:setfield("torque limit(%)", 0).
  105. rotor:mod:setfield("rpm limit", 0 ).
  106.  
  107. for blade in rotor:blades {
  108. blade:mod:setfield("deploy angle", 90).
  109. }
  110. }
  111.  
  112. for m in ship:modulesnamed("WBIModuleGeneratorFX") if m:hasevent("deactivate fusion power") m:doevent("deactivate fusion power").
  113. wait 0.
  114. bays off.
  115. }
  116.  
  117. when airspeed > turboSpeed then {
  118. info("Resume Airbreathing Flight").
  119. shutoff(vectors).
  120. set vlimit to 100.
  121. set angletarget to 90.
  122.  
  123. autoVectoring off.
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement