View difference between Paste ID: ZspmkZvY and kDs7tMhR
SHOW: | | - or go back to the newest paste.
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 choose 90 if vang(heading(90,0):vector,ship:facing:vector) < 45 else 0. 
66+
set x to 90. lock p to 0.
67-
lock p to 0.
67+
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-
when airspeed > 150 and apoapsis < 2000 then {
86+
87
    setangle(90).
88
    set p to 40.
89
    gear off.
90
}
91
92
93
94
when apoapsis > 900 then { 
95-
when apoapsis > 2000 then { 
95+
96
    lock p to max(10,vang(srfprograde:vector,heading(90,0):vector)).
97-
    lock p to max(10,vang(srfprograde:vector,heading(x,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