Mercurial > sypikslang
comparison gamelib/schematics.py @ 146:2587f8c34f84
Science juggling and visualization improvements.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 11 May 2012 16:20:49 +0200 |
parents | 53277724645b |
children | 3abb05f7e720 |
comparison
equal
deleted
inserted
replaced
145:53277724645b | 146:2587f8c34f84 |
---|---|
15 'DOOMSDAY_DEVICE', | 15 'DOOMSDAY_DEVICE', |
16 'PATHOGEN', | 16 'PATHOGEN', |
17 'MIND_CONTROL', | 17 'MIND_CONTROL', |
18 'BEAST', | 18 'BEAST', |
19 'AQUATIC', | 19 'AQUATIC', |
20 'SPY', | 20 'INTELLIGENCE', |
21 'AI', | 21 'AI', |
22 ) | 22 ) |
23 | 23 |
24 | 24 |
25 class Schematic(Science): | 25 class Schematic(Science): |
32 CATEGORIES = () | 32 CATEGORIES = () |
33 | 33 |
34 # Costs | 34 # Costs |
35 UPGRADE_REQUIREMENT = 1 | 35 UPGRADE_REQUIREMENT = 1 |
36 COST = None | 36 COST = None |
37 MAX_UPGRADE = 5 | |
37 | 38 |
38 # Power and reliability | 39 # Power and reliability |
39 PROTOTYPE_RELIABILITY = 0.4 | 40 PROTOTYPE_RELIABILITY = 0.4 |
40 PRODUCTION_RELIABILITY = 0.8 | 41 PRODUCTION_RELIABILITY = 0.8 |
41 BASE_POWER = None | 42 BASE_POWER = None |
43 | 44 |
44 # FIXME: Icons for equipment. | 45 # FIXME: Icons for equipment. |
45 IMAGE_NAME = "physics" | 46 IMAGE_NAME = "physics" |
46 | 47 |
47 def can_spend(self, lab, spend): | 48 def can_spend(self, lab, spend): |
48 extra = self.UPGRADE_REQUIREMENT * self.points + spend | 49 if self.points + spend > self.MAX_UPGRADE: |
50 return False | |
51 extra = self.UPGRADE_REQUIREMENT * (self.points + spend) | |
49 return lab.meet_requirements(self, extra) | 52 return lab.meet_requirements(self, extra) |
50 | 53 |
51 def is_a(self, category): | 54 def is_a(self, category): |
52 return category in self.CATEGORIES | 55 return category in self.CATEGORIES |
53 | 56 |
75 NAME = "machine gun" | 78 NAME = "machine gun" |
76 COST = 100 | 79 COST = 100 |
77 CATEGORIES = (cat.HAND_WEAPON,) | 80 CATEGORIES = (cat.HAND_WEAPON,) |
78 STARTING_PRODUCT = True | 81 STARTING_PRODUCT = True |
79 | 82 |
83 BASE_POWER = 10 | |
84 PRODUCTION_RELIABILITY = 1.0 | |
85 | |
80 def __init__(self, points=0): | 86 def __init__(self, points=0): |
81 self.points = 1 | 87 self.points = 1 |
82 | |
83 def spend_point(self): | |
84 raise NotImplementedError() | |
85 | |
86 def can_spend(self, lab, spend): | |
87 return False | |
88 | 88 |
89 | 89 |
90 class LightningGun(Schematic): | 90 class LightningGun(Schematic): |
91 NAME = "lightning gun" | 91 NAME = "lightning gun" |
92 COST = 300 | 92 COST = 300 |
93 CATEGORIES = (cat.HAND_WEAPON,) | 93 CATEGORIES = (cat.HAND_WEAPON,) |
94 PREREQUISITES = ( | 94 PREREQUISITES = ( |
95 (research.Electrickery, 1), | 95 (research.Electrickery, 1), |
96 ) | 96 ) |
97 | 97 |
98 BASE_POWER = 10 | |
99 | |
98 | 100 |
99 class TeslaTank(Schematic): | 101 class TeslaTank(Schematic): |
100 NAME = "tesla tank" | 102 NAME = "tesla tank" |
101 COST = 1000 | 103 COST = 40000 |
102 CATEGORIES = (cat.VEHICLE,) | 104 CATEGORIES = (cat.VEHICLE,) |
103 PREREQUISITES = ( | 105 PREREQUISITES = ( |
104 (research.Electrickery, 3), | 106 (research.Electrickery, 5), |
105 ) | 107 (research.Robotics, 1), |
108 ) | |
109 | |
110 BASE_POWER = 100 | |
111 POWER_INCREMENT = 10 | |
106 | 112 |
107 | 113 |
108 class DoomsdayVirus(Schematic): | 114 class DoomsdayVirus(Schematic): |
109 NAME = "doomsday virus" | 115 NAME = "doomsday virus" |
110 COST = 100000 | 116 COST = 100000 |
141 (research.MarineBiology, 10), | 147 (research.MarineBiology, 10), |
142 (research.Lasers, 7), | 148 (research.Lasers, 7), |
143 ) | 149 ) |
144 | 150 |
145 | 151 |
152 class GiantRobot(Schematic): | |
153 NAME = "giant robot" | |
154 COST = 2500000 | |
155 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.AI) | |
156 PREREQUISITES = ( | |
157 (research.Robotics, 15), | |
158 (research.ArtificialIntelligence, 10), | |
159 ) | |
160 | |
161 | |
162 class ObservationDrone(Schematic): | |
163 NAME = "observation drone" | |
164 COST = 6000 | |
165 CATEGORIES = (cat.INTELLIGENCE,) | |
166 PREREQUISITES = ( | |
167 (research.Robotics, 3), | |
168 ) | |
169 | |
170 | |
171 class SpySatellite(Schematic): | |
172 NAME = "spy satellite" | |
173 COST = 100000 | |
174 CATEGORIES = (cat.INTELLIGENCE,) | |
175 PREREQUISITES = ( | |
176 (research.Rocketry, 5), | |
177 (research.Space, 1), | |
178 ) | |
179 | |
180 | |
146 class OrbitalLaserPlatform(Schematic): | 181 class OrbitalLaserPlatform(Schematic): |
147 NAME = "An Orbital Laser Platform" | 182 NAME = "orbital laser platform" |
148 COST = 10000000 | 183 COST = 10000000 |
149 CATEGORIES = (cat.DOOMSDAY_DEVICE,) | 184 CATEGORIES = (cat.DOOMSDAY_DEVICE,) |
150 PREREQUISITES = ( | 185 PREREQUISITES = ( |
151 (research.Lasers, 5), | 186 (SpySatellite, 3), |
152 (research.Space, 2), | 187 (research.Lasers, 15), |
153 ) | 188 (research.Space, 5), |
154 | 189 ) |
155 | 190 |
156 class GiantRobot(Schematic): | 191 |
157 NAME = "A very large robot" | 192 class TacticalAI(Schematic): |
158 COST = 1000000 | 193 NAME = "tactical AI" |
159 CATEGORIES = (cat.DOOMSDAY_DEVICE,) | |
160 PREREQUISITES = ( | |
161 (research.Robotics, 5), | |
162 (research.ArtificialIntelligence, 2), | |
163 ) | |
164 | |
165 | |
166 class SpySattelite(Schematic): | |
167 NAME = "A small spy sattelite" | |
168 COST = 10000 | 194 COST = 10000 |
169 CATEGORIES = (cat.SPY,) | 195 CATEGORIES = (cat.AI, cat.INTELLIGENCE) |
170 PREREQUISITES = ( | 196 PREREQUISITES = ( |
171 (research.Space, 1), | 197 (research.ArtificialIntelligence, 3), |
172 ) | |
173 | |
174 | |
175 class ComputerAI(Schematic): | |
176 NAME = "AI Assistant" | |
177 COST = 10000 | |
178 CATEGORIES = (cat.AI,) | |
179 PREREQUISITES = ( | |
180 (research.ArtificialIntelligence, 1), | |
181 ) | 198 ) |
182 | 199 |
183 | 200 |
184 class LaserGun(Schematic): | 201 class LaserGun(Schematic): |
185 NAME = "Laser Gun" | 202 NAME = "Laser Gun" |
186 COST = 300 | 203 COST = 300 |
187 CATEGORIES = (cat.HAND_WEAPON,) | 204 CATEGORIES = (cat.HAND_WEAPON,) |
188 PREREQUISITES = ( | 205 PREREQUISITES = ( |
189 (research.Lasers, 1), | 206 (research.Lasers, 2), |
190 ) | 207 ) |