Mercurial > sypikslang
annotate gamelib/schematics.py @ 198:df350c2f8c10
Add another mission
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 12 May 2012 17:36:15 +0200 |
parents | 9e86ed5343d9 |
children | 4159e34d7310 |
rev | line source |
---|---|
54 | 1 # -*- test-case-name: gamelib.tests.test_schematics -*- |
2 | |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
3 from gamelib import research |
45
1e8f7e694f0c
Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
34
diff
changeset
|
4 from gamelib.game_base import Science |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
5 |
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
6 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
7 class SchematicCategorySet(object): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
8 def __init__(self, *categories): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
9 for cat in categories: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
10 setattr(self, cat, cat.lower().replace('_', ' ')) |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
11 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
12 cat = SchematicCategorySet( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
13 'HAND_WEAPON', |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
14 'VEHICLE', |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
15 'DOOMSDAY_DEVICE', |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
16 'PATHOGEN', |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
17 'MIND_CONTROL', |
116 | 18 'BEAST', |
19 'AQUATIC', | |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
20 'INTELLIGENCE', |
132 | 21 'AI', |
151
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
22 'COUNTERMEASURE', |
191
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
23 'SPACE', |
198 | 24 'WEATHER_MACHINE', |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
25 ) |
32 | 26 |
148 | 27 K = 1000 |
28 M = 1000 * K | |
29 | |
32 | 30 |
49 | 31 class Schematic(Science): |
54 | 32 # For all Schematics |
33 SCIENCE_TYPE = 'schematic' | |
34 | |
35 # Acquisition | |
36 STARTING_PRODUCT = False | |
6
826b44731323
Start of basic lab implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
3
diff
changeset
|
37 ACQUISITION_CHANCE = 0.8 |
54 | 38 CATEGORIES = () |
39 | |
40 # Costs | |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
41 UPGRADE_REQUIREMENT = 1 |
54 | 42 COST = None |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
43 MAX_UPGRADE = 5 |
54 | 44 |
45 # Power and reliability | |
46 PROTOTYPE_RELIABILITY = 0.4 | |
47 PRODUCTION_RELIABILITY = 0.8 | |
48 BASE_POWER = None | |
49 POWER_INCREMENT = None | |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
50 |
145
53277724645b
Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents:
132
diff
changeset
|
51 # FIXME: Icons for equipment. |
53277724645b
Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents:
132
diff
changeset
|
52 IMAGE_NAME = "physics" |
53277724645b
Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents:
132
diff
changeset
|
53 |
159
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
54 FAILURE_TEXT = "Your equipment failed in an excitingly disastrous manner." |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
55 |
58
52913ba12988
Check for multiple points in can_spend
Neil Muller <drnlmuller@gmail.com>
parents:
54
diff
changeset
|
56 def can_spend(self, lab, spend): |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
57 if self.points + spend > self.MAX_UPGRADE: |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
58 return False |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
59 extra = self.UPGRADE_REQUIREMENT * (self.points + spend) |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
60 return lab.meet_requirements(self, extra) |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
61 |
34 | 62 def is_a(self, category): |
63 return category in self.CATEGORIES | |
64 | |
54 | 65 def reliability(self): |
66 if self.points: | |
67 exp = 1 + 0.5 * (self.points - 1) | |
68 return 1.0 - ((1.0 - self.PRODUCTION_RELIABILITY) ** exp) | |
69 return self.PROTOTYPE_RELIABILITY | |
70 | |
71 def power(self): | |
72 power = self.BASE_POWER | |
73 if None not in (power, self.POWER_INCREMENT): | |
74 power += self.POWER_INCREMENT * self.points | |
75 return power | |
76 | |
94
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
77 @classmethod |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
78 def sanity_check(cls): |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
79 for science, points in cls.PREREQUISITES: |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
80 assert issubclass(science, Science) |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
81 assert isinstance(points, int) |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
82 assert isinstance(cls.CATEGORIES, tuple) |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
91
diff
changeset
|
83 |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
84 |
49 | 85 class MachineGun(Schematic): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
86 NAME = "machine gun" |
15 | 87 COST = 100 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
88 CATEGORIES = (cat.HAND_WEAPON,) |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
89 STARTING_PRODUCT = True |
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
90 |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
91 BASE_POWER = 10 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
92 PRODUCTION_RELIABILITY = 1.0 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
93 |
20 | 94 def __init__(self, points=0): |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
95 self.points = 1 |
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
96 |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
97 |
49 | 98 class LightningGun(Schematic): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
99 NAME = "lightning gun" |
32 | 100 COST = 300 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
101 CATEGORIES = (cat.HAND_WEAPON,) |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
102 PREREQUISITES = ( |
115 | 103 (research.Electrickery, 1), |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
104 ) |
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
105 |
148 | 106 BASE_POWER = 15 |
107 POWER_INCREMENT = 3 | |
108 PRODUCTION_RELIABILITY = 0.7 | |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
109 |
159
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
110 FAILURE_TEXT = ( |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
111 "Your lightning gun dropped an insulator, leaking volts and coulombs" |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
112 " all over the place.") |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
113 |
3
6ab4f1ab9eab
Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
114 |
49 | 115 class TeslaTank(Schematic): |
159
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
116 NAME = "Tesla tank" |
148 | 117 COST = 40 * K |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
118 CATEGORIES = (cat.VEHICLE,) |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
119 PREREQUISITES = ( |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
120 (research.Electrickery, 5), |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
121 (research.Robotics, 1), |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
122 ) |
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
123 |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
124 BASE_POWER = 100 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
125 POWER_INCREMENT = 10 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
126 |
159
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
127 FAILURE_TEXT = ( |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
128 "The cheap knock-off capacitors in the primary charge module of the" |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
129 " Tesla tank knocked off, leading to much excitement.") |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
130 |
17
10d3db1f1e08
Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
15
diff
changeset
|
131 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
132 class PropagandaMachine(Schematic): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
133 NAME = "propaganda machine" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
134 COST = 1000 |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
85
diff
changeset
|
135 CATEGORIES = (cat.MIND_CONTROL,) |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
136 PREREQUISITES = ( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
137 (research.Psychology, 2), |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
58
diff
changeset
|
138 ) |
116 | 139 |
148 | 140 BASE_POWER = 10 |
141 POWER_INCREMENT = 2 | |
142 | |
159
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
143 FAILURE_TEXT = ( |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
144 "The propaganda machine printed reams of carefully structured" |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
145 " nonsense, which the proofreaders didn't catch until too late.") |
f1efd252e8b0
Equipment power in missions.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
146 |
116 | 147 |
193 | 148 class MindControlRay(Schematic): |
149 NAME = "mind control ray" | |
150 COST = 4 * K | |
151 CATEGORIES = (cat.MIND_CONTROL,) | |
152 PREREQUISITES = ( | |
153 (research.Psychology, 6), | |
154 (research.MedicalExperiments, 6), | |
155 ) | |
156 | |
157 BASE_POWER = 40 | |
158 POWER_INCREMENT = 6 | |
159 | |
160 FAILURE_TEXT = ( | |
161 "The frequency tuner on the mind control ray was slightly" | |
162 " miscalibrated. A new genre of glitterpop was born, but this" | |
163 " entirely fails to advance your shadowy agenda.") | |
164 | |
165 | |
116 | 166 class GiantSquid(Schematic): |
167 NAME = "giant squid" | |
148 | 168 COST = 50 * K |
116 | 169 CATEGORIES = (cat.BEAST, cat.AQUATIC) |
170 PREREQUISITES = ( | |
171 (research.MarineBiology, 20), | |
172 (research.Biogenetics, 15), | |
173 ) | |
174 | |
148 | 175 BASE_POWER = 200 |
176 POWER_INCREMENT = 20 | |
177 | |
116 | 178 |
188 | 179 class SpiderGrenade(Schematic): |
180 NAME = "spider grenade" | |
181 COST = 500 | |
182 CATEGORIES = (cat.HAND_WEAPON,) | |
183 PREREQUISITES = ( | |
184 (research.Biogenetics, 3), | |
185 (research.Physics, 2), | |
186 ) | |
187 | |
188 BASE_POWER = 22 | |
189 POWER_INCREMENT = 2 | |
190 | |
191 PRODUCTION_RELIABILITY = 0.6 | |
192 | |
193 FAILURE_TEXT = ( | |
194 "Explosions full of spiders. What could possibly go wrong? Oh god!" | |
195 " They're everywhere! EVERYWHERE! Get them off me!") | |
196 | |
197 | |
189 | 198 class CyberneticImplants(Schematic): |
199 NAME = "cybernetic implants" | |
200 COST = 1500 | |
201 CATEGORIES = (cat.HAND_WEAPON, cat.INTELLIGENCE) | |
202 PREREQUISITES = ( | |
203 (research.MedicalExperiments, 5), | |
204 (research.Robotics, 5), | |
205 ) | |
206 | |
207 BASE_POWER = 25 | |
208 POWER_INCREMENT = 5 | |
209 | |
210 PRODUCTION_RELIABILITY = 0.9 | |
211 | |
212 FAILURE_TEXT = ( | |
213 "Exciting buffer overflows in your neural interface. I'll spare you" | |
214 " the gruesome details.") | |
215 | |
216 | |
190 | 217 class TornadoMachine(Schematic): |
218 NAME = "tornado machine" | |
219 COST = 7 * K | |
198 | 220 CATEGORIES = (cat.VEHICLE, cat.WEATHER_MACHINE) |
190 | 221 PREREQUISITES = ( |
222 (research.Meteorology, 6), | |
223 (research.Physics, 5), | |
224 ) | |
225 | |
226 BASE_POWER = 40 | |
227 POWER_INCREMENT = 8 | |
228 | |
229 FAILURE_TEXT = ( | |
230 "Tornados! Dropping cows on you! Hardly conducive to mission success.") | |
231 | |
232 | |
174 | 233 class MonsterBear(Schematic): |
234 NAME = "Giant Bear" | |
235 COST = 10 * K | |
236 CATEGORIES = (cat.BEAST,) | |
237 PREREQUISITES = ( | |
238 (research.Biogenetics, 3), | |
239 ) | |
240 | |
241 BASE_POWER = 50 | |
242 POWER_INCREMENT = 5 | |
243 | |
244 | |
116 | 245 class SharksWithFrickinLasers(Schematic): |
246 NAME = "sharks with frickin' lasers" | |
148 | 247 COST = 15 * K |
116 | 248 CATEGORIES = (cat.BEAST, cat.AQUATIC) |
249 PREREQUISITES = ( | |
250 (research.MarineBiology, 10), | |
251 (research.Lasers, 7), | |
252 ) | |
132 | 253 |
148 | 254 BASE_POWER = 75 |
255 POWER_INCREMENT = 10 | |
132 | 256 |
257 | |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
258 class ObservationDrone(Schematic): |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
259 NAME = "observation drone" |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
260 COST = 6000 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
261 CATEGORIES = (cat.INTELLIGENCE,) |
132 | 262 PREREQUISITES = ( |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
263 (research.Robotics, 3), |
132 | 264 ) |
265 | |
148 | 266 BASE_POWER = 25 |
267 POWER_INCREMENT = 5 | |
268 | |
132 | 269 |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
270 class SpySatellite(Schematic): |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
271 NAME = "spy satellite" |
148 | 272 COST = 100 * K |
191
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
273 CATEGORIES = (cat.INTELLIGENCE, cat.SPACE) |
132 | 274 PREREQUISITES = ( |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
275 (research.Rocketry, 5), |
132 | 276 (research.Space, 1), |
277 ) | |
278 | |
148 | 279 BASE_POWER = 250 |
280 POWER_INCREMENT = 50 | |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
281 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
282 |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
283 class TacticalAI(Schematic): |
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
284 NAME = "tactical AI" |
148 | 285 COST = 10 * K |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
286 CATEGORIES = (cat.AI, cat.INTELLIGENCE) |
132 | 287 PREREQUISITES = ( |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
288 (research.ArtificialIntelligence, 3), |
132 | 289 ) |
290 | |
174 | 291 FAILURE_TEXT = ( |
292 "Everything seems to be going smoothly until the AI decides it" | |
293 " needs to rule the world itself. Fortuantely, you are able to purge" | |
294 " it from the system before it becomes a legitimate rival.") | |
295 | |
132 | 296 |
297 class LaserGun(Schematic): | |
151
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
298 NAME = "laser gun" |
132 | 299 COST = 300 |
300 CATEGORIES = (cat.HAND_WEAPON,) | |
301 PREREQUISITES = ( | |
146
2587f8c34f84
Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents:
145
diff
changeset
|
302 (research.Lasers, 2), |
132 | 303 ) |
170 | 304 BASE_POWER = 20 |
305 POWER_INCREMENT = 2 | |
306 PRODUCTION_RELIABILITY = 0.6 | |
148 | 307 |
172
8e743d774cba
Add failure flavour text
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
308 FAILURE_TEXT = ( |
8e743d774cba
Add failure flavour text
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
309 "The carefully crafted electronics of the laser fail in a spectacular" |
8e743d774cba
Add failure flavour text
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
310 " shower of sparks and bangs.") |
8e743d774cba
Add failure flavour text
Neil Muller <drnlmuller@gmail.com>
parents:
170
diff
changeset
|
311 |
148 | 312 |
151
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
313 class EmpMissile(Schematic): |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
314 NAME = "EMP missile" |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
315 COST = 1500 |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
316 CATEGORIES = (cat.COUNTERMEASURE,) |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
317 PREREQUISITES = ( |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
318 (research.Electrickery, 5), |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
319 (research.Rocketry, 2), |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
320 ) |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
321 |
372d886f9e70
New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents:
148
diff
changeset
|
322 |
148 | 323 class DoomsdayVirus(Schematic): |
324 NAME = "doomsday virus" | |
325 COST = 100 * K | |
326 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.PATHOGEN) | |
327 PREREQUISITES = ( | |
328 (research.Biogenetics, 5), | |
329 ) | |
330 | |
331 BASE_POWER = 1000 | |
332 POWER_INCREMENT = 500 | |
333 | |
334 PRODUCTION_RELIABILITY = 0.6 | |
335 | |
336 | |
337 class GiantRobot(Schematic): | |
338 NAME = "giant robot" | |
339 COST = int(1.5 * M) | |
340 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.AI) | |
341 PREREQUISITES = ( | |
342 (research.Robotics, 15), | |
343 (research.ArtificialIntelligence, 10), | |
344 ) | |
345 | |
346 BASE_POWER = 700 | |
347 POWER_INCREMENT = 300 | |
348 | |
349 PRODUCTION_RELIABILITY = 0.7 | |
350 | |
351 | |
352 class OrbitalLaserPlatform(Schematic): | |
353 NAME = "orbital laser platform" | |
354 COST = 10 * M | |
191
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
355 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.SPACE) |
148 | 356 PREREQUISITES = ( |
357 (SpySatellite, 3), | |
358 (research.Lasers, 15), | |
359 (research.Space, 5), | |
360 ) | |
361 | |
362 BASE_POWER = 1500 | |
363 POWER_INCREMENT = 200 | |
191
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
364 |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
365 |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
366 class WeatherControlStation(Schematic): |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
367 NAME = "weather control station" |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
368 COST = 15 * M |
198 | 369 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.SPACE, cat.WEATHER_MACHINE) |
191
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
370 PREREQUISITES = ( |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
371 (SpySatellite, 3), |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
372 (research.Lasers, 5), |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
373 (research.Space, 8), |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
374 (research.Meteorology, 15), |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
375 ) |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
376 |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
377 BASE_POWER = 2200 |
0b746c72cb5b
Weather control station.
Jeremy Thurgood <firxen@gmail.com>
parents:
190
diff
changeset
|
378 POWER_INCREMENT = 150 |