Mercurial > boomslang
annotate gamelib/scenes/mess.py @ 407:c7a6846262e3
Fix cursor handling after message dismissal.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 28 Aug 2010 22:01:03 +0200 |
parents | c81a4faa748e |
children | 72baf5bfebc6 |
rev | line source |
---|---|
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
1 """Mess where crew eat. Fun stuff.""" |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
2 |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
3 from random import choice |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
4 |
263
3b4a78422201
Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents:
252
diff
changeset
|
5 from gamelib.state import Scene, Item, CloneableItem, Thing, Result |
145 | 6 from gamelib.cursor import CursorSprite |
263
3b4a78422201
Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents:
252
diff
changeset
|
7 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage, |
3b4a78422201
Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents:
252
diff
changeset
|
8 InteractRectUnion, InteractImage, |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
9 InteractImageRect, InteractAnimated, |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
10 GenericDescThing) |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
11 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
12 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
13 class Mess(Scene): |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
14 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
15 FOLDER = "mess" |
140
95d882eeba12
Link up mess hall background.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
16 BACKGROUND = "mess_hall.png" |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
17 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
18 INITIAL_DATA = { |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
19 'accessible': True, |
389
eef2fca1aa11
Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents:
363
diff
changeset
|
20 'life support online': False, |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
21 } |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
22 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
23 def __init__(self, state): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
24 super(Mess, self).__init__(state) |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
25 self.add_thing(CansOnShelf()) |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
26 self.add_thing(Tubes()) |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
27 self.add_thing(ToMap()) |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
28 self.add_thing(DetergentThing()) |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
29 self.add_item(DetergentBottle('detergent_bottle')) |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
30 # Flavour items |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
31 # extra cans on shelf |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
32 self.add_thing(GenericDescThing('mess.cans', 1, |
295
4a9f29bae9b0
more full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
294
diff
changeset
|
33 "A large collection of rusted, useless cans.", |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
34 ( |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
35 (154, 335, 89, 106), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
36 (152, 435, 63, 66), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
37 ))) |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
38 self.add_thing(GenericDescThing('mess.broccoli', 2, |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
39 "An impressively overgrown broccoli.", |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
40 ( |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
41 (503, 89, 245, 282), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
42 (320, 324, 229, 142), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
43 ))) |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
44 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
45 |
221 | 46 class BaseCan(CloneableItem): |
47 """Base class for the cans""" | |
145 | 48 |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
49 def interact_with_full_can(self, item, state): |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
50 return Result("You bang the cans together. It sounds like two cans being banged together.", soundfile="can_hit.ogg") |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
51 |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
52 def interact_with_dented_can(self, item, state): |
219
326300c218a6
Choppable cryopipes and can refactoring.
Jeremy Thurgood <firxen@gmail.com>
parents:
218
diff
changeset
|
53 return self.interact_with_full_can(item, state) |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
54 |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
55 def interact_with_empty_can(self, item, state): |
219
326300c218a6
Choppable cryopipes and can refactoring.
Jeremy Thurgood <firxen@gmail.com>
parents:
218
diff
changeset
|
56 return self.interact_with_full_can(item, state) |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
57 |
221 | 58 def interact_with_machete(self, item, state): |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
59 return Result("You'd mangle it beyond usefulness.") |
191 | 60 |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
61 def interact_with_canopener(self, item, state): |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
62 empty = EmptyCan('empty_can') |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
63 state.add_item(empty) |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
64 state.replace_inventory_item(self.name, empty.name) |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
65 return Result("You open both ends of the can, discarding the hideous contents.") |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
66 |
221 | 67 |
68 class EmptyCan(BaseCan): | |
69 "After emptying the full can." | |
70 | |
71 INVENTORY_IMAGE = "empty_can.png" | |
302
6d93e04036c9
CursorSprite: Default pointer-position to the centre of the cursor
Stefano Rivera <stefano@rivera.za.net>
parents:
299
diff
changeset
|
72 CURSOR = CursorSprite('empty_can_cursor.png') |
221 | 73 |
74 def interact_with_titanium_leg(self, item, state): | |
295
4a9f29bae9b0
more full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
294
diff
changeset
|
75 return Result("Flattening the can doesn't look like a useful thing to do.") |
221 | 76 |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
77 def interact_with_canopener(self, item, state): |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
78 return Result("There's nothing left to open on this can") |
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
79 |
221 | 80 |
81 class FullCan(BaseCan): | |
145 | 82 "Found on the shelf." |
83 | |
84 INVENTORY_IMAGE = "full_can.png" | |
302
6d93e04036c9
CursorSprite: Default pointer-position to the centre of the cursor
Stefano Rivera <stefano@rivera.za.net>
parents:
299
diff
changeset
|
85 CURSOR = CursorSprite('full_can_cursor.png') |
145 | 86 |
191 | 87 def interact_with_titanium_leg(self, item, state): |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
88 dented = DentedCan("dented_can") |
191 | 89 state.add_item(dented) |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
90 state.replace_inventory_item(self.name, dented.name) |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
91 return Result("You club the can with the femur. The can gets dented, but doesn't open.", soundfile="can_hit.ogg") |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
92 |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
93 |
221 | 94 class DentedCan(BaseCan): |
167
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
95 "A can banged on with the femur" |
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
96 |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
97 INVENTORY_IMAGE = "dented_can.png" |
302
6d93e04036c9
CursorSprite: Default pointer-position to the centre of the cursor
Stefano Rivera <stefano@rivera.za.net>
parents:
299
diff
changeset
|
98 CURSOR = CursorSprite('dented_can_cursor.png') |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
99 |
191 | 100 def interact_with_titanium_leg(self, item, state): |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
101 return Result("You club the can with the femur. The dents shift around, but it still doesn't open.", soundfile="can_hit.ogg") |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
102 |
145 | 103 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
104 class CansOnShelf(Thing): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
105 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
106 NAME = "mess.cans" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
107 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
108 INTERACTS = { |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
109 '3cans': InteractImage(165, 209, 'shelf_3_cans.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
110 '2cans': InteractImage(165, 209, 'shelf_2_cans.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
111 '1cans': InteractImage(165, 209, 'shelf_1_can.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
112 '0cans': InteractNoImage(165, 209, 50, 50), |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
113 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
114 |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
115 INITIAL = '3cans' |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
116 |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
117 INITIAL_DATA = { |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
118 'cans_available': 3, |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
119 } |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
120 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
121 def interact_without(self): |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
122 starting_cans = self.get_data('cans_available') |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
123 if starting_cans > 0: |
192 | 124 can = FullCan("full_can") |
125 self.state.add_item(can) | |
126 self.state.add_inventory_item(can.name) | |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
127 self.set_data('cans_available', starting_cans - 1) |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
128 self.set_interact('%icans' % (starting_cans - 1)) |
299
c3ff6ff879e6
Make the can Thing go away when it's empty.
Jeremy Thurgood <firxen@gmail.com>
parents:
296
diff
changeset
|
129 if starting_cans == 1: |
c3ff6ff879e6
Make the can Thing go away when it's empty.
Jeremy Thurgood <firxen@gmail.com>
parents:
296
diff
changeset
|
130 self.scene.remove_thing(self) |
192 | 131 return Result({ |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
132 3: "Best before a long time in the past. Better not eat these.", |
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
133 2: "Mmmm. Nutritious bacteria stew.", |
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
134 1: "Candied silkworms. Who stocked this place?!", |
192 | 135 }[starting_cans]) |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
136 else: |
192 | 137 return Result("The rest of the cans are rusted beyond usefulness.") |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
138 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
139 def get_description(self): |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
140 return "The contents of these cans look synthetic." |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
141 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
142 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
143 class Tubes(Thing): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
144 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
145 NAME = "mess.tubes" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
146 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
147 INTERACTS = { |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
148 "blocked": InteractImage(250, 130, "blocking_broccoli.png"), |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
149 "broken": InteractImage(250, 183, "broken_tubes.png"), |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
150 "fixed": InteractImage(252, 183, "fixed_tubes.png"), |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
151 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
152 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
153 INITIAL = "blocked" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
154 |
226 | 155 INITIAL_DATA = { |
156 "status": "blocked", | |
157 } | |
158 | |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
159 def get_description(self): |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
160 if self.get_data('status') == "blocked": |
295
4a9f29bae9b0
more full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
294
diff
changeset
|
161 return "The broccoli seems to have become entangled with something." |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
162 elif self.get_data("status") == "broken": |
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
163 return "These broken pipes look important." |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
164 elif self.get_data("status") == "replaced": |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
165 return "The pipes have been repaired but are the repairs aren't airtight, yet" |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
166 else: |
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
167 return "Your fix looks like it's holding up well." |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
168 |
226 | 169 def interact_with_machete(self, item): |
170 if self.get_data("status") == "blocked": | |
171 self.set_data("status", "broken") | |
172 self.set_interact("broken") | |
264
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
173 return Result("With a flurry of disgusting mutant vegetable " |
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
174 "chunks, you clear the overgrown broccoli away from " |
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
175 "the access panel and reveal some broken tubes. " |
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
176 "They look important.", |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
177 soundfile='chopping.ogg') |
226 | 178 elif self.get_data("status") == "broken": |
179 return Result("It looks broken enough already.") | |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
180 elif self.get_data("status") == "replaced": |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
181 return Result("Cutting holes won't repair the leaks.") |
226 | 182 else: |
264
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
183 return Result("After all that effort fixing it, chopping it to " |
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
184 "bits doesn't seem very smart.") |
226 | 185 |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
186 def interact_with_cryo_pipes_three(self, item): |
226 | 187 if self.get_data("status") == "blocked": |
188 return Result("It would get lost in the fronds.") | |
189 else: | |
190 self.state.remove_inventory_item(item.name) | |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
191 self.set_data('status', 'replaced') |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
192 # TODO: An interact image for fixed but untaped pipes |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
193 return Result( |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
194 "The pipes slot neatly into place, but don't make an airtight seal." |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
195 ) |
226 | 196 |
197 def interact_with_duct_tape(self, item): | |
198 if self.get_data("status") == "broken": | |
199 return Result("It would get lost in the fronds.") | |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
200 elif self.get_data("status") == 'fixed': |
226 | 201 return Result("There's quite enough tape on the ducting already.") |
202 else: | |
203 self.set_data("fixed", True) | |
204 self.set_data("status", "fixed") | |
205 self.set_interact("fixed") | |
392
c81a4faa748e
Flag puzzle end conditions
Neil Muller <neil@dip.sun.ac.za>
parents:
389
diff
changeset
|
206 self.scene.set_data('life support online', True) |
226 | 207 # TODO: A less anticlimactic climax? |
208 return Result("It takes quite a lot of tape, but eventually everything is" | |
209 " airtight and ready to hold pressure. Who'd've thought duct" | |
210 " tape could actually be used to tape ducts?") | |
211 | |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
212 |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
213 class DetergentThing(Thing): |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
214 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
215 NAME = "mess.detergent" |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
216 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
217 INTERACTS = { |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
218 'present': InteractImageRect(581, 424, 'detergent_lid.png', 565, 399, 62, 95), |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
219 'taken': InteractNoImage(565, 399, 62, 95), |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
220 } |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
221 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
222 INITIAL = 'present' |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
223 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
224 INITIAL_DATA = { |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
225 'taken': False, |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
226 } |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
227 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
228 def interact_without(self): |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
229 if self.get_data('taken'): |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
230 return Result("I think one dishwashing liquid bottle is enough for now") |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
231 self.set_data('taken', True) |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
232 self.set_interact('taken') |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
233 self.state.add_inventory_item('detergent_bottle') |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
234 return Result("You pick up an empty dishwashing liquid bottle. You can't find any sponges") |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
235 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
236 def get_description(self): |
322 | 237 return "Empty plastic containers. They used to hold dishwasher soap." |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
238 |
363
2cadb47405a4
Use bottle image. The boomslang is now triangle-free
Stefano Rivera <stefano@rivera.za.net>
parents:
348
diff
changeset
|
239 |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
240 class DetergentBottle(Item): |
363
2cadb47405a4
Use bottle image. The boomslang is now triangle-free
Stefano Rivera <stefano@rivera.za.net>
parents:
348
diff
changeset
|
241 INVENTORY_IMAGE = 'bottle_empty.png' |
2cadb47405a4
Use bottle image. The boomslang is now triangle-free
Stefano Rivera <stefano@rivera.za.net>
parents:
348
diff
changeset
|
242 CURSOR = CursorSprite('bottle_empty_cursor.png', 27, 7) |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
243 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
244 |
242 | 245 class ToMap(Door): |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
246 |
252
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
247 SCENE = "mess" |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
248 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
249 INTERACTS = { |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
250 "door": InteractNoImage(20, 390, 85, 150), |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
251 } |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
252 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
253 INITIAL = "door" |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
254 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
255 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
256 SCENES = [Mess] |