// Control code for pre-launch sequence using ModularLaunchPads. // This enable's the launchpad's fuel feed, // stages, spools up the engines, and then "releases control" // to the main ship computer. // // The launchpad object should have the "launchpad" tag. // Fuel tanks with the "nofuel" tag will have *all* resources temporarily disabled during this // sequence. The main ship computer must re-enable them after staging. NoFuelResources in lib/systems is ideal // for this. RunOncePath("/lib/systems"). ClearGuis(). function enableLaunchpadFlow { local lp is SHIP:PartsTagged("launchpad")[0]. // ModularLaunchpads have more than one module with the "ModuleGenerator" name, so we have to // iterate over them all. local i is 0. until i >= lp:ALLMODULES:LENGTH { local m is lp:GetModuleByIndex(i). if m:NAME = "ModuleGenerator" { if m:HasEvent("activate generator") { m:DoEvent("activate generator"). } if m:HasEvent("start fueling") { m:DoEvent("start fueling"). } } set i to i+1. } } function preLaunch { print "Beginning pre-launch sequence.". NoFuelResources(false). // turn on generator and fuel flow enableLaunchpadFlow(). lock THROTTLE to 0. stage. local startTime is TIME:SECONDS. lock THROTTLE to (TIME:SECONDS-startTime)/15. wait 15. set SHIP:CONTROL:PILOTMAINTHROTTLE to 1.0. unlock THROTTLE. print "Pre-launch sequence complete.". iface:Hide(). shutdown. } global iface is gui(250, 300). set iface:X to 200. set iface:Y to 500. local top is iface:AddVLayout(). local btn is top:AddButton("Pre-Launch"). set btn:onClick to preLaunch@. iface:Show(). wait until false.