Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function info {
- parameter message.
- set logmessage to round(missionTime,1):tostring():padleft(6) + " " + round(altitude):tostring():padright(6) + ": " + message.
- print logmessage.
- }
- //Set Vars
- set steeringmanager:rollcontrolanglerange to 180.
- set proprad to 5.8.
- set rotormods to ship:modulesnamed("ModuleRoboticServoRotor").
- set rotors to list().
- for rm in rotormods {
- local rotor to lexicon().
- set rotor["part"] to rm:part.
- set rotor["mod"] to rm.
- set rotor["blades"] to list().
- for bm in rm:part:ModulesNamed("ModuleControlSurface") {
- local b to bm:part.
- local blade to lexicon().
- set blade["mod"] to bm.
- set blade["offset"] to vdot(-b:Facing:starvector, b:position - b:parent:position).
- set blade["proprad"] to proprad.
- bm:setfield("deploy", true).
- rotor["blades"]:add(blade).
- }
- rotors:add(rotor).
- rm:setfield("torque limit(%)", 100).
- }
- set first to true.
- set taraoa to 4.5.
- set deploycopy to 9.
- Fuelcells on.
- set displayIndex to 0.
- //Lock Vars
- set rpmtarget to 460.
- lock aoa to arcsin(srfprograde:topvector * facing:vector).
- //Functions
- //Control Loop
- on round(time:seconds * 10) {
- if(bays) {
- set rpmcopy to rpmtarget.
- for rotor in rotors {
- local currrpm to rpmcopy.
- rotor:mod:setfield("rpm limit", rpmcopy ).
- set calcAirspeed to (2 * constant:pi * (rotor:blades[0]:proprad + rotor:blades[0]:offset) * currrpm/60).
- set deploycopy to max(3, taraoa + arctan2(airspeed, calcAirspeed)).
- for blade in rotor:blades {
- blade:mod:setfield("deploy angle", deploycopy).
- }
- }
- } else {
- if(first)
- {
- for rotor in rotors {
- rotor:mod:setfield("rpm limit", 0 ).
- for blade in rotor:blades {
- blade:mod:setfield("deploy angle", 25).
- }
- }
- set first to false.
- }
- }
- return first.
- }
- //Flight
- brakes off.
- lock x to 90.
- lock p to max(aoa,min(75,(airspeed-120)/2)).
- info("lock p to max(aoa,min(75,(airspeed-50)/2)).").
- toggle ag5.
- lock throttle to (100e3-apoapsis)/500.
- lock steering to heading(x,p).
- //Triggers
- when alt:radar > 10 then gear off.
- set rocketing to false.
- when (altitude > 7500 and ship:verticalspeed < 1 or airspeed > 400 ) then {
- info("switching to rockets").
- lock rpmtarget to 0.
- bays off.
- toggle ag6.
- stage.
- lock p to 35.
- info("lock p to 35.").
- wait 0. set rocketing to true.
- }
- when apoapsis > body:atm:height - 10e3 then {
- info("locking to srfprograde").
- lock steering to srfprograde.
- }
- when apoapsis > 100e3 or altitude > body:atm:height then {
- info("locking to prograde").
- lock steering to prograde.
- }
- when altitude > body:atm:height then {
- info("adjust throttle for orbit").
- lock throttle to 30-eta:apoapsis.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement