Mercurial > sypikslang
annotate gamelib/missions.py @ 95:0f437e0584f7
Add mission for taking over the world.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Wed, 09 May 2012 21:26:30 +0200 |
parents | 245ef50de84d |
children | 50f8476aa929 |
rev | line source |
---|---|
5 | 1 # -*- coding: utf-8 -*- |
2 # vim:fileencoding=utf-8 ai ts=4 sts=4 et sw=4 | |
3 | |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
4 from random import randint |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
5 |
95
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
6 from gamelib.constants import SUCCESS, FAILURE, GAME_WIN |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
7 from gamelib.schematics import cat |
18
0849ab5304cf
Add more mission result codes
Neil Muller <drnlmuller@gmail.com>
parents:
13
diff
changeset
|
8 |
5 | 9 |
13
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
10 class Result(object): |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
11 """Results of a mission""" |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
12 |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
13 def __init__(self, outcome, money, reputation, msg): |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
14 self.outcome = outcome |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
15 self.money = money |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
16 self.reputation = reputation |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
17 self.message = msg |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
18 self.applied = False |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
19 |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
20 def apply(self, state): |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
21 if not self.applied: |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
22 state.money += self.money |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
23 state.reputation += self.reputation |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
24 self.applied = True |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
25 else: |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
26 raise RuntimeError('attempted to apply result twice') |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
27 |
c0966997e0c5
Use a results object instead of tuple (will hopefully make changign stuff easier later)
Neil Muller <drnlmuller@gmail.com>
parents:
10
diff
changeset
|
28 |
5 | 29 class Mission(object): |
30 """Base class for the mission objects. | |
31 Missions have a name, short description (for list displays) and | |
32 long description (which may contain clues about approaches)""" | |
33 | |
34 NAME = "Generic Mission" | |
35 SHORT_DESCRIPTION = None | |
36 LONG_DESCRIPTION = None | |
33
12c33aac7684
Gate certain missions by reputation.
Jeremy Thurgood <firxen@gmail.com>
parents:
32
diff
changeset
|
37 MINIMUM_REPUTATION = None |
5 | 38 |
22
296ce36fa7d9
Serialize and unserialize game state and missions
Neil Muller <drnlmuller@gmail.com>
parents:
19
diff
changeset
|
39 def __init__(self, init_data=None): |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
40 self.data = {} |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
41 |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
42 if init_data is not None: |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
43 # Load stored state. |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
44 self._load_data(init_data) |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
45 else: |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
46 # New instance. |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
47 self._new_data() |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
48 |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
49 def _new_data(self): |
22
296ce36fa7d9
Serialize and unserialize game state and missions
Neil Muller <drnlmuller@gmail.com>
parents:
19
diff
changeset
|
50 pass |
296ce36fa7d9
Serialize and unserialize game state and missions
Neil Muller <drnlmuller@gmail.com>
parents:
19
diff
changeset
|
51 |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
52 def _load_data(self, init_data): |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
53 # Note: this does not deep-copy. |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
54 self.data = init_data.copy() |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
55 |
22
296ce36fa7d9
Serialize and unserialize game state and missions
Neil Muller <drnlmuller@gmail.com>
parents:
19
diff
changeset
|
56 def save_data(self): |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
57 # Note: this does not deep-copy. |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
58 return self.data.copy() |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
59 |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
60 def get_data(self, key): |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
61 return self.data.get(key, None) |
22
296ce36fa7d9
Serialize and unserialize game state and missions
Neil Muller <drnlmuller@gmail.com>
parents:
19
diff
changeset
|
62 |
94
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
92
diff
changeset
|
63 @classmethod |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
92
diff
changeset
|
64 def sanity_check(cls): |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
92
diff
changeset
|
65 pass |
245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
Jeremy Thurgood <firxen@gmail.com>
parents:
92
diff
changeset
|
66 |
41
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
67 def can_attempt(self, state): |
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
68 """Can we currently attempt the mission""" |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
69 if self.get_data('completed'): |
41
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
70 return False |
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
71 if (self.MINIMUM_REPUTATION is not None and |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
72 self.MINIMUM_REPUTATION > state.reputation): |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
73 # Don't have the reputation required |
41
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
74 return False |
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
75 return True |
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
76 |
10
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
77 def attempt(self, equipment, state): |
5 | 78 """Attempt the mission with the given equipment list. |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
79 Returns a result object with the results of the mission.""" |
5 | 80 |
41
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
81 # Handle error case |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
82 if self.get_data('completed'): |
41
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
83 raise RuntimeError('Cannot attempt a completed mission') |
e285b1e31a08
Add can_attempt method for future flexibility
Neil Muller <drnlmuller@gmail.com>
parents:
36
diff
changeset
|
84 |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
85 # No equipment is usually a special case. |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
86 if not equipment: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
87 return self.attempt_no_equipment(state) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
88 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
89 # Categorise equipment for easier decision-making. |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
90 categorised = {} |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
91 for item in equipment: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
92 for category in item.CATEGORIES: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
93 categorised.setdefault(category, []).append(item) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
94 result = self.attempt_with(categorised, state) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
95 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
96 if result is not None: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
97 # We have a mission result. |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
98 return result |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
99 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
100 # Generic fallback result. |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
101 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
102 "You fail to inspire sufficient fear.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
103 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
104 def attempt_no_equipment(self, state): |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
105 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
106 "Really? You're going in completely unequipped?" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
107 " How brave. And foolish. And ultimately unsuccessful.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
108 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
109 def attempt_with(self, categorised, state): |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
110 return Result(FAILURE, 0, 0, "You can't succceed at this mission.") |
5 | 111 |
112 | |
19
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
113 class PlaygroundBully(Mission): |
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
114 |
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
115 NAME = "Rob kids in the playground" |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
116 SHORT_DESCRIPTION = "Steal from those significantly weaker than yourself." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
117 LONG_DESCRIPTION = ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
118 "It's not menancing, or lucrative, but when the bills are due, no one" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
119 " cares how you earn the money.") |
19
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
120 |
32 | 121 def attempt(self, equipment, state): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
122 haul = randint(90, 110) |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
123 return Result(SUCCESS, haul, -1, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
124 "You devote your resources to robbing kids in a playpark." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
125 " It's not the finest moment in your reign of terror, but at" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
126 " least you walked away with a surprising amount of small" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
127 " change.")) |
19
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
128 |
12085dfd9e69
Add rescue mission for the out of money case
Neil Muller <drnlmuller@gmail.com>
parents:
18
diff
changeset
|
129 |
5 | 130 class RansomChina(Mission): |
131 | |
132 NAME = "Hold China to ransom" | |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
133 SHORT_DESCRIPTION = "Surely a path to riches and fame." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
134 LONG_DESCRIPTION = ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
135 "Holding China to ransom. The rewards for successfully threatening" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
136 " the largest country in the world are great, but the risks are" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
137 " significant. Without some serious firepower, the chances of success" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
138 " are small.") |
33
12c33aac7684
Gate certain missions by reputation.
Jeremy Thurgood <firxen@gmail.com>
parents:
32
diff
changeset
|
139 MINIMUM_REPUTATION = 100 |
5 | 140 |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
141 def _new_data(self): |
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
142 self.data['prior_attempts'] = [] |
5 | 143 |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
144 def attempt_no_equipment(self, state): |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
145 return Result(FAILURE, 0, -10, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
146 "It takes three different interpreters before the Chinese" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
147 " government finally understand that you're trying to hold" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
148 " them ransom with... well... nothing. Nothing at all. This" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
149 " one will probably make a good anecdote at diplomatic" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
150 " cocktail parties. But not for you. No, not for you at all.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
151 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
152 def attempt_with(self, categorised, state): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
153 dooms = categorised.get(cat.DOOMSDAY_DEVICE, []) |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
154 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
155 if not dooms: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
156 return Result(FAILURE, 0, -1, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
157 "You completely fail to inspire the requisite level of" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
158 " terror. Maybe a more impressive threat will fare" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
159 " better.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
160 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
161 if len(dooms) > 1: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
162 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
163 "Everyone seems confused as to how you actually plan" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
164 " to cause widepsread distruction and mayhem, and" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
165 " negotiations break down. Perhaps it's better to stick" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
166 " to one weapon of mass destruction at a time.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
167 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
168 [doom] = dooms |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
169 if doom.NAME in self.data['prior_attempts']: |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
170 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
171 "'We have devised countermeasures since last time, doctor." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
172 " You cannot threaten us with that again.'")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
173 |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
174 self.data['prior_attempts'].add(doom.NAME) |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
175 return Result(SUCCESS, 1000000, 10, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
176 "Trembling at you threat of certain doom, the Chinese" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
177 " government pays the ransom.")) |
5 | 178 |
179 | |
35 | 180 class ToppleThirdWorldGovernment(Mission): |
181 | |
182 NAME = "Topple a third-world government" | |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
183 SHORT_DESCRIPTION = "We could use a more amenable dictator there." |
35 | 184 LONG_DESCRIPTION = ( |
185 "It's a small and fairly useless country, but it's still an actual" | |
186 " government that can be toppled. A good test bed for some of the" | |
187 " larger toys in the armory.") | |
188 MINIMUM_REPUTATION = 50 | |
189 | |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
190 def attempt_no_equipment(self, state): |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
191 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
192 "The border post may be poorly guarded, but you need to" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
193 " bring *some* kind of weaponry along. Your troops sulk" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
194 " on the way home.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
195 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
196 def attempt_with(self, categorised, state): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
197 if any(c in categorised for c in (cat.VEHICLE, cat.HAND_WEAPON)): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
198 return Result(SUCCESS, randint(5000, 15000), randint(3, 7), ( |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
199 "The corruption and oppression continue, but at least" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
200 " the proceeds are making their way into *your*" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
201 " pockets. And you don't even have to dirty your own" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
202 " jackboots.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
203 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
204 if cat.DOOMSDAY_DEVICE in categorised: |
35 | 205 return Result(FAILURE, 0, 0, ( |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
206 "Nobody seems to quite understand what it is you're" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
207 " threatening them with. Eventually you have to give up" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
208 " and go home.")) |
35 | 209 |
210 | |
5 | 211 class RobBank(Mission): |
212 | |
213 NAME = "Rob the local bank" | |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
214 SHORT_DESCRIPTION = "A trivial challenge, but easy money." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
215 LONG_DESCRIPTION = ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
216 "The security guards and local police are of minor concern. Walk in," |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
217 " clean out the vault, walk out. Couldn't be simpler.") |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
218 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
219 def attempt_no_equipment(self, state): |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
220 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
221 "Your attempt to rob the bank barehanded is unsuccessful." |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
222 " Fortunately, everyone is too stunned to impede your" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
223 " escape.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
224 |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
225 def attempt_with(self, categorised, state): |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
226 loot = randint(500, 1500) |
5 | 227 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
228 if cat.VEHICLE in categorised: |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
229 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
230 "Your vehicles are impressively doom-laden, but not really" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
231 " suitable for city traffic. You intimidate the traffic" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
232 " wardens into letting you off without a fine, but by the" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
233 " time you get to the bank it's already closed.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
234 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
235 if cat.HAND_WEAPON in categorised: |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
236 return Result(SUCCESS, loot, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
237 "The threat of your weapons is enough to inspire an" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
238 " impressive level of cooperation. You make off with the" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
239 " loot.")) |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
240 |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
241 if cat.PATHOGEN in categorised: |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
242 if state.reputation < 10: |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
243 return Result(FAILURE, 0, 0, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
244 "The clerk doesn't realise the threat of" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
245 " the vial you hold, and, although watching him" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
246 " die in agony would be statisfying, you decide" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
247 " it's not worth wasting this on something so" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
248 " trivial")) |
5 | 249 else: |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
250 return Result(SUCCESS, loot, 1, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
251 "Holding up a bank with only a small vial of clear" |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
252 " liquid. Now that is power.")) |
10
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
253 |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
254 |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
255 class DestroyMountRushmore(Mission): |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
256 |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
257 NAME = "Destroy Mount Rushmore" |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
258 SHORT_DESCRIPTION = "Monuments to other people? Intolerable" |
92 | 259 LONG_DESCRIPTION = ( |
260 "While potentially expensive, destroying a major monument is a" | |
261 " good way to secure your reputation.") | |
33
12c33aac7684
Gate certain missions by reputation.
Jeremy Thurgood <firxen@gmail.com>
parents:
32
diff
changeset
|
262 MINIMUM_REPUTATION = 20 |
10
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
263 |
9f8def7d70d0
Rework mission objects to include reputation
Neil Muller <drnlmuller@gmail.com>
parents:
5
diff
changeset
|
264 def attempt(self, equipment, state): |
91
c57b5b46d3e0
Better mission data management.
Jeremy Thurgood <firxen@gmail.com>
parents:
86
diff
changeset
|
265 self.data['completed'] = True |
36
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
266 return Result(SUCCESS, 0, 50, ( |
efc4f90cfd63
Mission refactoring and research fix.
Jeremy Thurgood <firxen@gmail.com>
parents:
35
diff
changeset
|
267 "Mount Rushmore is remarkably easy to destroy.")) |
85
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
268 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
269 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
270 class DistributePamphlets(Mission): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
271 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
272 NAME = "Distribute pamphlets" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
273 SHORT_DESCRIPTION = "The populace need to be told the truth!" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
274 LONG_DESCRIPTION = ( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
275 "A focused pamphlet distribution campaign will combat the lies being" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
276 " spread about you. Replacing them with better lies, of course.") |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
277 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
278 SUCCESS_MESSAGE = ( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
279 "A small army of urchins delivers thousands of cheaply printed" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
280 " pamphlets. %s") |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
281 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
282 def attempt_no_equipment(self, state): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
283 rep = randint(-2, 5) |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
284 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
285 if rep < 0: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
286 result = ( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
287 "Sadly, the populace was so annoyed by the flood of flyers" |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
288 " that nobody took any notice of the content.") |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
289 elif rep == 0: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
290 result = "Nobody seems to have noticed." |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
291 else: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
292 result = "The public seemed mildly receptive to your propaganda." |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
293 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
294 return Result(SUCCESS, 0, rep, self.SUCCESS_MESSAGE % (result,)) |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
295 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
296 def attempt_with(self, categorised, state): |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
297 rep = randint(5, 10) |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
298 |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
299 if cat.MIND_CONTROL in categorised: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
300 result = ( |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
301 "Your creative use of science has paid off nicely.") |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
302 return Result(SUCCESS, 0, rep, self.SUCCESS_MESSAGE % (result,)) |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
303 else: |
182fce9f70b6
Propaganda! Also, a fix to blueprint breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents:
80
diff
changeset
|
304 return self.attempt_no_equipment(state) |
95
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
305 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
306 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
307 class TakeOverTheWorld(Mission): |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
308 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
309 NAME = "Take over the world!" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
310 SHORT_DESCRIPTION = "It's for their own good." |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
311 LONG_DESCRIPTION = ( |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
312 "Someone has to rule the world and if it's not you it'd just be" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
313 " someone less well qualified -- and that would be worse for" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
314 " everyone.") |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
315 MINIMUM_REPUTATION = 200 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
316 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
317 SUCCESS_MESSAGE = ( |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
318 "A small army of urchins delivers thousands of cheaply printed" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
319 " pamphlets. %s") |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
320 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
321 def attempt_no_equipment(self, state): |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
322 return Result(FAILURE, 0, 0, "It's going to take more than your bare" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
323 " hands to take over the world!") |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
324 |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
325 def attempt_with(self, categorised, state): |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
326 if cat.MIND_CONTROL not in categorised: |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
327 return Result(FAILURE, 0, 5, "If you're going to take over the" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
328 " first you must control key elements within the" |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
329 " populace.") |
0f437e0584f7
Add mission for taking over the world.
Simon Cross <hodgestar@gmail.com>
parents:
94
diff
changeset
|
330 return Result(GAME_WIN, 0, 100, "The world is yours!") |