-
Notifications
You must be signed in to change notification settings - Fork 1
/
RoverMissions.template
235 lines (205 loc) · 6.02 KB
/
RoverMissions.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
CONTRACT_TYPE
{
name = RoverExplore
title = Rover Expedition
group = RoverMissionsGroup
description = The science team has identified an area of scientific interest and believes that @/targetVessel on @/targetBody should be directed to investigate.
notes = Pilot your rover to the indicated location and perform all the science you can at that site.
synopsis = Drive @/targetVessel on @/targetBody to this location.
completedMessage = Research complete! Good work.
deadline = 50
targetBody = @/targetVessel.CelestialBody()
maxSimultaneous = 1
rewardReputation = 1.0
rewardFunds = 10000.0
failureReputation = 5.0
failureFunds = 20000.0
advanceFunds = 0
agent = Space Penguins, Inc
DATA
{
type = Vessel
requiredValue = true
// targetVessel = AllVessels().Where(v => v.VesselType() == Rover && v.IsLanded() == true && v.CrewCapacity() > 0).SelectUnique()
// targetVessel = AllVessels().Where(v => v.VesselType() == Rover && v.IsLanded() == true && v.CrewCapacity() = 0).SelectUnique()
targetVessel = AllVessels().Where(v => v.VesselType() == Rover && v.IsLanded() == true).SelectUnique()
}
DATA
{
hidden = true
type = double
targetRadius = @/targetBody.Radius()
homeRadius = HomeWorld().Radius()
distanceFactorTemp = @targetRadius == 0 ? 1 : @targetRadius/@homeRadius + 0.3
//distanceFactor = @distanceFactorTemp / 2
// Following for testing only
distanceFactor = 0.05
TrivialMin = 3000 * @distanceFactor
SignificantMin = 5000 * @distanceFactor
ExceptionalMin = 7000 * @distanceFactor
TrivialMax = 4000 * @distanceFactor
SignificantMax = 6000 * @distanceFactor
ExceptionalMax = 8000 * @distanceFactor
}
DATA
{
type = bool
isTrivial = Prestige() == Trivial
isSignificant = Prestige() == Significant
isExceptional = Prestige() == Exceptional
hasTherm = @/targetVessel.Parts().Where(p => p == sensorThermometer).Count() > 0
hasBar = @/targetVessel.Parts().Where(p => p == sensorBarometer).Count() > 0
hasAccel = @/targetVessel.Parts().Where(p => p == sensorAccelerometer).Count() > 0
hasGrav = @/targetVessel.Parts().Where(p => p == sensorGravimeter).Count() > 0
hasGoo = @/targetVessel.Parts().Where(p => p == GooExperiment).Count() > 0
hasMat = @/targetVessel.Parts().Where(p => p == science_module).Count() > 0
hasAtmo = @/targetVessel.Parts().Where(p => p == sensorAtmosphere).Count() > 0
hasScientist = @/targetVessel.Crew().Where(k => k.ExperienceTrait() == "Scientist").Count() > 0
hasAtmosphere = @/targetBody.HasAtmosphere()
}
DATA
{
type = int
numWaypoints = Random(1, 5)
calcMinCrew = @/targetVessel.CrewCapacity() > 0 ? 1:0
}
DATA
{
hidden = true
type = List<string>
a1l = [ "Marker", "Memorial", "Milestone", "Monument", "Museum", "Tree", "Battleground", "Benchmark", "Bend", "Blaze" ]
a2l = [ "Geature", "Gragment", "Huide", "Hill", "Mark", "Milepost", "Mountain", "Promontory", "Remnant", "Ruins" ]
a3l = [ "Souvenir", "Specimen", "Stone", "Survival", "Trace", "Vestige", "Vantage point", "Waypost", "Beacon", "Bellwether" ]
a4l = [ "Catalog", "Chapter and Verse", "Clue", "Compendium", "Directory", "Enchiridion", "Guiding Light", "Hot Lead", "Key", "Landmark" ]
a5l = [ "Lodestar", "Manual", "Mark", "Marker", "No-no's", "Pointer", "Sign", "Signal", "Signpost", "Telltale", "Tip-Off", "Vade Mecum" ]
}
DATA
{
hidden = true
type = string
k1 = RandomKerbalName(Male)
k2 = RandomKerbalName(Female)
k3 = RandomKerbalName(Male)
k4 = RandomKerbalName(Female)
k5 = RandomKerbalName(Female)
a1 = @a1l.Random()
a2 = @a2l.Random()
a3 = @a3l.Random()
a4 = @a4l.Random()
a5 = @a5l.Random()
}
PARAMETER
{
name = HasCrew
type = HasCrew
//minCrew = @/targetVessel.CrewCapacity()
minCrew = @/calcMinCrew
REQUIREMENT
{
name = crewRequirement
type = Expression
expression = @/calcMinCrew > 0
}
}
PARAMETER
{
name = PartValidation
type = PartValidation
partModule = ModuleWheel
}
PARAMETER
{
name = Sequence
type = Sequence
completeInSequence = true
PARAMETER
{
name = ReachState
type = ReachState
failWhenUnmet = true
maxTerrainAltitude = 1000
}
<OBJECTIVES>
}
BEHAVIOUR
{
name = WaypointGenerator
type = WaypointGenerator
WAYPOINT
{
name = Rover Location
hidden = true
icon = report
altitude = 0.0
latitude = @/targetVessel.Location().Latitude()
longitude = @/targetVessel.Location().Longitude()
}
<WAYPOINTGENERATOR>
}
}
CONTRACT_TYPE
{
name = RoverDeploy
title = Rover Deployment
//group = Rovers
group = RoverMissionsGroup
agent = Space Penguins, Inc
description = Much of @/targetBody is a mystery to us still. We could learn a lot by deploying a new rover there.
notes = Launch a new rover to @/targetBody. Include all the scientific instrumentation you can!
synopsis = Launch a new rover to @/targetBody
completedMessage = The rover is on location and ready for research!
deadline = 10000
targetBody = @/planet
maxSimultaneous = 1
rewardReputation = 2
rewardFunds = 10000
failureReputation = 4
failureFunds = 20000
advanceFunds = 10000
DATA
{
type = CelestialBody
planet = Prestige() == Trivial ? @/easyPlanets.Random() : Prestige() == Significant ? @/mediumPlanets.Random() : @/hardPlanets.Random()
}
DATA
{
hidden = true
type = CelestialBody
home = HomeWorld()
}
DATA
{
hidden = true
type = List<CelestialBody>
easyPlanets = HomeWorld().Children()
mediumPlanets = OrbitedBodies().Where(b => b.HasSurface()).ExcludeAll(@easyPlanets).Exclude(HomeWorld())
hardPlanetsTemp = AllBodies().Where(b => b.HasSurface()).ExcludeAll(@mediumPlanets)
hardPlanets = @hardPlanetsTemp.ExcludeAll(@easyPlanets).Exclude(HomeWorld())
}
REQUIREMENT
{
name = PartModuleTypeUnlocked
type = PartModuleTypeUnlocked
partModuleType = Antenna
partModuleType = Wheel
}
PARAMETER
{
name = NewVessel
type = NewVessel
title = Launch a new rover
}
PARAMETER
{
name = ReachState
type = ReachState
situation = LANDED
}
PARAMETER
{
name = VesselIsType
type = VesselIsType
vesselType = Rover
title = Set vessel type to Rover
}
}