-
Notifications
You must be signed in to change notification settings - Fork 5
/
KerbalAcademyScientificPrinciples.cfg
146 lines (127 loc) · 4.33 KB
/
KerbalAcademyScientificPrinciples.cfg
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
CONTRACT_TYPE
{
name = KerbalAcademyScientificPrinciples
title = Kerbal Academy: Scientific Principles
group = KerbalAcademy
description = After an incident involving mystery goo, it was determined @/trainee could do with brushing up on their scientific knowledge. @/mentor has been called in to help with instruction.
genericDescription = One of our scientists could do with brushing up on their scientific knowledge. Good job we have a mentor to help.
synopsis = Let @/trainee collect @/experiment while being tutored by @/mentor .
completedMessage = Success. @/trainee can feel the benefit of @/mentor's experience already.
agent = Kerbal Academy
minExpiry = 1
maxExpiry = 7
cancellable = true
maxSimultaneous = 1
declinable = true
prestige = Significant
targetBody = HomeWorld()
rewardScience = 0.0
rewardReputation = 0.0
rewardFunds = 0
failureReputation = 0
failureFunds = 0
advanceFunds = @/trainingCost
DATA
{
type = Kerbal
uniquenessCheck = CONTRACT_ACTIVE
mentor = AllKerbals().Where(m => m.ExperienceTrait() == Scientist && m.ExperienceLevel()>=2 && m.Type() == Crew && m.RosterStatus() == Available).Random()
trainee = AllKerbals().Where(m => m.ExperienceTrait() == Scientist && m.ExperienceLevel()<= @/minExperience && m.Type() == Crew && m.RosterStatus() == Available).Random()
title = Must have a Scientist who qualifies for the Basic Program. Must have a mentor who is at least two levels more advanced.
}
DATA
{
type = int
levelGain = @/mentor.ExperienceLevel() - @/trainee.ExperienceLevel()-1
newLevel = Random(1, @/mentor.ExperienceLevel()-1)
hidden = true
}
DATA
{
type = double
rewardMultiplier = Random(@/trainee.ExperienceLevel(), @/mentor.ExperienceLevel())
trainingCost = @/rewardMultiplier*-100000
expAward = @newLevel == 4 ? 16 : @newLevel == 3 ? 8 : @newLevel == 2 ? 6 : 2
minExperience = @/mentor.ExperienceLevel()-2
hidden = true
}
DATA
{
type = CelestialBody
home = HomeWorld()
orbited = OrbitedBodies().Random()
hidden = true
}
DATA
{
type = List<Biome>
requiredValue = false
KSC = KSCBiomes().ExcludeAll(MainKSCBiomes())
homeBiomes = @/home.Biomes().Where(r => r.RemainingScience() >= Science())
orbitedBiomes = @/orbited.Biomes().Where(r => r.RemainingScience() >= Science())
validhomeBiomes = @/homeBiomes.ExcludeAll(@KSC)
validorbitBiomes = @/orbitedBiomes.ExcludeAll(@KSC)
invalidorbitBiomes = @/orbited.Biomes()
hidden = true
}
DATA
{
type = Biome
requiredValue = false
homeBiome = @/validhomeBiomes.Random()
orbitBiome = @/validorbitBiomes.Random()
invalidBiome = @/invalidorbitBiomes.Random()
hidden = true
}
DATA
{
type = List<ScienceSubject>
requiredValue = false
orbitExperiment = AllScienceSubjectsByBiome([@orbitBiome]).Where(s => s.RemainingScience()>= 0 && s.RemainingScience()<=Science())
homeExperiment = AllScienceSubjectsByBiome([@homeBiome]).Where(s => s.RemainingScience()>= 0 && s.RemainingScience()<=Science())
invalidExperiment = AllScienceSubjectsByBiome([@invalidBiome])
hidden = true
}
DATA
{
type = ScienceSubject
uniquenessCheck = GROUP_ACTIVE
experiment = @/homeExperiment.Count()>0 ? @/homeExperiment.Random() : @/orbitExperiment.Count() >0 ? @/orbitExperiment.Random() : @/invalidExperiment.Random()
title = Must have a valid experiment for the trainee to perform (this should never fail)
}
BEHAVIOUR
{
name = AwardExperience
type = AwardExperience
kerbal = @/trainee
experience = @/expAward
}
PARAMETER
{
name = HasCrew
type = HasCrew
kerbal = @/mentor
kerbal = @/trainee
}
PARAMETER
{
name = CollectScience
type = CollectScience
subject = @/experiment
recoveryMethod = None
}
REQUIREMENT
{
name = Expression
type = Expression
expression = (@/mentor.RosterStatus() == Available)
title = Mentor must be available in the Roster.
}
REQUIREMENT
{
name = Expression
type = Expression
expression = (@/trainee.RosterStatus() == Available)
title = Trainee must be available in the Roster.
}
}