annotate gamelib/schematics.py @ 151:372d886f9e70

New suggest_research() method on Lab.
author Jeremy Thurgood <firxen@gmail.com>
date Fri, 11 May 2012 20:06:36 +0200
parents 3abb05f7e720
children f1efd252e8b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
1 # -*- test-case-name: gamelib.tests.test_schematics -*-
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
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
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
18 'BEAST',
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
19 'AQUATIC',
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
20 'INTELLIGENCE',
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
21 'AI',
151
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
22 'COUNTERMEASURE',
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
23 )
32
00aff02bc6fc Product categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 24
diff changeset
24
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
25 K = 1000
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
26 M = 1000 * K
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
27
32
00aff02bc6fc Product categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 24
diff changeset
28
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
29 class Schematic(Science):
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
30 # For all Schematics
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
31 SCIENCE_TYPE = 'schematic'
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
32
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
33 # Acquisition
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
34 STARTING_PRODUCT = False
6
826b44731323 Start of basic lab implementation.
Jeremy Thurgood <firxen@gmail.com>
parents: 3
diff changeset
35 ACQUISITION_CHANCE = 0.8
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
36 CATEGORIES = ()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
37
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
38 # Costs
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
39 UPGRADE_REQUIREMENT = 1
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
40 COST = None
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
41 MAX_UPGRADE = 5
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
42
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
43 # Power and reliability
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
44 PROTOTYPE_RELIABILITY = 0.4
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
45 PRODUCTION_RELIABILITY = 0.8
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
46 BASE_POWER = None
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
47 POWER_INCREMENT = None
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
48
145
53277724645b Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 132
diff changeset
49 # FIXME: Icons for equipment.
53277724645b Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 132
diff changeset
50 IMAGE_NAME = "physics"
53277724645b Science button juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 132
diff changeset
51
58
52913ba12988 Check for multiple points in can_spend
Neil Muller <drnlmuller@gmail.com>
parents: 54
diff changeset
52 def can_spend(self, lab, spend):
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
53 if self.points + spend > self.MAX_UPGRADE:
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
54 return False
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
55 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
56 return lab.meet_requirements(self, extra)
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
57
34
20ed2843adec More categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 32
diff changeset
58 def is_a(self, category):
20ed2843adec More categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 32
diff changeset
59 return category in self.CATEGORIES
20ed2843adec More categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 32
diff changeset
60
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
61 def reliability(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
62 if self.points:
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
63 exp = 1 + 0.5 * (self.points - 1)
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
64 return 1.0 - ((1.0 - self.PRODUCTION_RELIABILITY) ** exp)
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
65 return self.PROTOTYPE_RELIABILITY
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
66
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
67 def power(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
68 power = self.BASE_POWER
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
69 if None not in (power, self.POWER_INCREMENT):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
70 power += self.POWER_INCREMENT * self.points
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
71 return power
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
72
94
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
73 @classmethod
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
74 def sanity_check(cls):
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
75 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
76 assert issubclass(science, Science)
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
77 assert isinstance(points, int)
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
78 assert isinstance(cls.CATEGORIES, tuple)
245ef50de84d Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents: 91
diff changeset
79
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
80
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
81 class MachineGun(Schematic):
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
82 NAME = "machine gun"
15
8865ba0c9c38 Add cost to products
Neil Muller <drnlmuller@gmail.com>
parents: 14
diff changeset
83 COST = 100
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
84 CATEGORIES = (cat.HAND_WEAPON,)
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
85 STARTING_PRODUCT = True
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
86
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
87 BASE_POWER = 10
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
88 PRODUCTION_RELIABILITY = 1.0
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
89
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
90 def __init__(self, points=0):
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
91 self.points = 1
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
92
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
93
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
94 class LightningGun(Schematic):
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
95 NAME = "lightning gun"
32
00aff02bc6fc Product categories.
Jeremy Thurgood <firxen@gmail.com>
parents: 24
diff changeset
96 COST = 300
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
97 CATEGORIES = (cat.HAND_WEAPON,)
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
98 PREREQUISITES = (
115
ef63532cac13 Rearrange SCIENCE a bit.
Jeremy Thurgood <firxen@gmail.com>
parents: 94
diff changeset
99 (research.Electrickery, 1),
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
100 )
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
101
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
102 BASE_POWER = 15
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
103 POWER_INCREMENT = 3
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
104 PRODUCTION_RELIABILITY = 0.7
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
105
3
6ab4f1ab9eab Very basics of research and products.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
106
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
107 class TeslaTank(Schematic):
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
108 NAME = "tesla tank"
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
109 COST = 40 * K
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
110 CATEGORIES = (cat.VEHICLE,)
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
111 PREREQUISITES = (
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
112 (research.Electrickery, 5),
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
113 (research.Robotics, 1),
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
114 )
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
115
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
116 BASE_POWER = 100
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
117 POWER_INCREMENT = 10
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
118
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 15
diff changeset
119
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
120 class PropagandaMachine(Schematic):
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
121 NAME = "propaganda machine"
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
122 COST = 1000
91
c57b5b46d3e0 Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents: 85
diff changeset
123 CATEGORIES = (cat.MIND_CONTROL,)
85
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
124 PREREQUISITES = (
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
125 (research.Psychology, 2),
182fce9f70b6 Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
126 )
116
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
127
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
128 BASE_POWER = 10
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
129 POWER_INCREMENT = 2
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
130
116
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
131
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
132 class GiantSquid(Schematic):
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
133 NAME = "giant squid"
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
134 COST = 50 * K
116
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
135 CATEGORIES = (cat.BEAST, cat.AQUATIC)
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
136 PREREQUISITES = (
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
137 (research.MarineBiology, 20),
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
138 (research.Biogenetics, 15),
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
139 )
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
140
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
141 BASE_POWER = 200
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
142 POWER_INCREMENT = 20
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
143
116
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
144
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
145 class SharksWithFrickinLasers(Schematic):
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
146 NAME = "sharks with frickin' lasers"
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
147 COST = 15 * K
116
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
148 CATEGORIES = (cat.BEAST, cat.AQUATIC)
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
149 PREREQUISITES = (
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
150 (research.MarineBiology, 10),
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
151 (research.Lasers, 7),
a8a46c14d467 Marine beasts!
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
152 )
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
153
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
154 BASE_POWER = 75
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
155 POWER_INCREMENT = 10
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
156
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
157
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
158 class ObservationDrone(Schematic):
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
159 NAME = "observation drone"
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
160 COST = 6000
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
161 CATEGORIES = (cat.INTELLIGENCE,)
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
162 PREREQUISITES = (
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
163 (research.Robotics, 3),
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
164 )
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
165
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
166 BASE_POWER = 25
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
167 POWER_INCREMENT = 5
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
168
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
169
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
170 class SpySatellite(Schematic):
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
171 NAME = "spy satellite"
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
172 COST = 100 * K
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
173 CATEGORIES = (cat.INTELLIGENCE,)
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
174 PREREQUISITES = (
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
175 (research.Rocketry, 5),
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
176 (research.Space, 1),
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
177 )
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
178
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
179 BASE_POWER = 250
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
180 POWER_INCREMENT = 50
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
181
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
182
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
183 class TacticalAI(Schematic):
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
184 NAME = "tactical AI"
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
185 COST = 10 * K
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
186 CATEGORIES = (cat.AI, cat.INTELLIGENCE)
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
187 PREREQUISITES = (
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
188 (research.ArtificialIntelligence, 3),
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
189 )
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
190
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
191
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
192 class LaserGun(Schematic):
151
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
193 NAME = "laser gun"
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
194 COST = 300
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
195 CATEGORIES = (cat.HAND_WEAPON,)
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
196 PREREQUISITES = (
146
2587f8c34f84 Science juggling and visualization improvements.
Jeremy Thurgood <firxen@gmail.com>
parents: 145
diff changeset
197 (research.Lasers, 2),
132
8e64bbd561bd grab bag of extra tech
Neil Muller <drnlmuller@gmail.com>
parents: 116
diff changeset
198 )
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
199
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
200
151
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
201 class EmpMissile(Schematic):
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
202 NAME = "EMP missile"
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
203 COST = 1500
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
204 CATEGORIES = (cat.COUNTERMEASURE,)
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
205 PREREQUISITES = (
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
206 (research.Electrickery, 5),
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
207 (research.Rocketry, 2),
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
208 )
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
209
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
210
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
211 class DoomsdayVirus(Schematic):
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
212 NAME = "doomsday virus"
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
213 COST = 100 * K
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
214 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.PATHOGEN)
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
215 PREREQUISITES = (
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
216 (research.Biogenetics, 5),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
217 )
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
218
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
219 BASE_POWER = 1000
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
220 POWER_INCREMENT = 500
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
221
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
222 PRODUCTION_RELIABILITY = 0.6
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
223
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
224
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
225 class GiantRobot(Schematic):
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
226 NAME = "giant robot"
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
227 COST = int(1.5 * M)
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
228 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.AI)
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
229 PREREQUISITES = (
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
230 (research.Robotics, 15),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
231 (research.ArtificialIntelligence, 10),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
232 )
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
233
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
234 BASE_POWER = 700
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
235 POWER_INCREMENT = 300
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
236
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
237 PRODUCTION_RELIABILITY = 0.7
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
238
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
239
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
240 class OrbitalLaserPlatform(Schematic):
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
241 NAME = "orbital laser platform"
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
242 COST = 10 * M
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
243 CATEGORIES = (cat.DOOMSDAY_DEVICE,)
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
244 PREREQUISITES = (
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
245 (SpySatellite, 3),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
246 (research.Lasers, 15),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
247 (research.Space, 5),
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
248 )
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
249
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
250 BASE_POWER = 1500
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 146
diff changeset
251 POWER_INCREMENT = 200