diff 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
line wrap: on
line diff
--- a/gamelib/schematics.py	Fri May 11 14:58:00 2012 +0200
+++ b/gamelib/schematics.py	Fri May 11 16:20:49 2012 +0200
@@ -17,7 +17,7 @@
     'MIND_CONTROL',
     'BEAST',
     'AQUATIC',
-    'SPY',
+    'INTELLIGENCE',
     'AI',
     )
 
@@ -34,6 +34,7 @@
     # Costs
     UPGRADE_REQUIREMENT = 1
     COST = None
+    MAX_UPGRADE = 5
 
     # Power and reliability
     PROTOTYPE_RELIABILITY = 0.4
@@ -45,7 +46,9 @@
     IMAGE_NAME = "physics"
 
     def can_spend(self, lab, spend):
-        extra = self.UPGRADE_REQUIREMENT * self.points + spend
+        if self.points + spend > self.MAX_UPGRADE:
+            return False
+        extra = self.UPGRADE_REQUIREMENT * (self.points + spend)
         return lab.meet_requirements(self, extra)
 
     def is_a(self, category):
@@ -77,15 +80,12 @@
     CATEGORIES = (cat.HAND_WEAPON,)
     STARTING_PRODUCT = True
 
+    BASE_POWER = 10
+    PRODUCTION_RELIABILITY = 1.0
+
     def __init__(self, points=0):
         self.points = 1
 
-    def spend_point(self):
-        raise NotImplementedError()
-
-    def can_spend(self, lab, spend):
-        return False
-
 
 class LightningGun(Schematic):
     NAME = "lightning gun"
@@ -95,15 +95,21 @@
         (research.Electrickery, 1),
         )
 
+    BASE_POWER = 10
+
 
 class TeslaTank(Schematic):
     NAME = "tesla tank"
-    COST = 1000
+    COST = 40000
     CATEGORIES = (cat.VEHICLE,)
     PREREQUISITES = (
-        (research.Electrickery, 3),
+        (research.Electrickery, 5),
+        (research.Robotics, 1),
         )
 
+    BASE_POWER = 100
+    POWER_INCREMENT = 10
+
 
 class DoomsdayVirus(Schematic):
     NAME = "doomsday virus"
@@ -143,41 +149,52 @@
         )
 
 
-class OrbitalLaserPlatform(Schematic):
-    NAME = "An Orbital Laser Platform"
-    COST = 10000000
-    CATEGORIES = (cat.DOOMSDAY_DEVICE,)
+class GiantRobot(Schematic):
+    NAME = "giant robot"
+    COST = 2500000
+    CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.AI)
     PREREQUISITES = (
-        (research.Lasers, 5),
-        (research.Space, 2),
+        (research.Robotics, 15),
+        (research.ArtificialIntelligence, 10),
         )
 
 
-class GiantRobot(Schematic):
-    NAME = "A very large robot"
-    COST = 1000000
-    CATEGORIES = (cat.DOOMSDAY_DEVICE,)
+class ObservationDrone(Schematic):
+    NAME = "observation drone"
+    COST = 6000
+    CATEGORIES = (cat.INTELLIGENCE,)
     PREREQUISITES = (
-        (research.Robotics, 5),
-        (research.ArtificialIntelligence, 2),
+        (research.Robotics, 3),
         )
 
 
-class SpySattelite(Schematic):
-    NAME = "A small spy sattelite"
-    COST = 10000
-    CATEGORIES = (cat.SPY,)
+class SpySatellite(Schematic):
+    NAME = "spy satellite"
+    COST = 100000
+    CATEGORIES = (cat.INTELLIGENCE,)
     PREREQUISITES = (
+        (research.Rocketry, 5),
         (research.Space, 1),
         )
 
 
-class ComputerAI(Schematic):
-    NAME = "AI Assistant"
+class OrbitalLaserPlatform(Schematic):
+    NAME = "orbital laser platform"
+    COST = 10000000
+    CATEGORIES = (cat.DOOMSDAY_DEVICE,)
+    PREREQUISITES = (
+        (SpySatellite, 3),
+        (research.Lasers, 15),
+        (research.Space, 5),
+        )
+
+
+class TacticalAI(Schematic):
+    NAME = "tactical AI"
     COST = 10000
-    CATEGORIES = (cat.AI,)
+    CATEGORIES = (cat.AI, cat.INTELLIGENCE)
     PREREQUISITES = (
-        (research.ArtificialIntelligence, 1),
+        (research.ArtificialIntelligence, 3),
         )
 
 
@@ -186,5 +203,5 @@
     COST = 300
     CATEGORIES = (cat.HAND_WEAPON,)
     PREREQUISITES = (
-        (research.Lasers, 1),
+        (research.Lasers, 2),
         )