Mercurial > pyntnclick
annotate gamelib/scenes/mess.py @ 603:3ce19d33b51f pyntnclick
Rename state to game to not cause confusion with the other state
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sat, 11 Feb 2012 20:09:47 +0200 |
parents | 4e9178215e75 |
children | f703bdce8c9e |
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 |
528
0ce08d5e2acb
pyflakes-induced cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
525
diff
changeset
|
3 from random import randint |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
4 |
549 | 5 from pyntnclick.state import Scene, Item, CloneableItem, Thing, Result |
6 from pyntnclick.cursor import CursorSprite | |
7 from pyntnclick.scenewidgets import (InteractNoImage, InteractImage, | |
525
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
8 InteractImageRect, InteractAnimated, |
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
9 GenericDescThing) |
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
10 |
435 | 11 from gamelib.scenes.game_constants import PLAYER_ID |
525
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
12 from gamelib.scenes.game_widgets import Door |
419 | 13 |
47
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 class Mess(Scene): |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
16 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
17 FOLDER = "mess" |
140
95d882eeba12
Link up mess hall background.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
18 BACKGROUND = "mess_hall.png" |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
19 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
20 INITIAL_DATA = { |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
21 'life support status': 'broken', # broken, replaced, fixed |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
22 } |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
23 |
592
4e9178215e75
Introduce .setup() for GameDeveloperGizmos.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
579
diff
changeset
|
24 def setup(self): |
143
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()) |
419 | 29 self.add_thing(Boomslang()) |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
30 self.add_item(DetergentBottle('detergent_bottle')) |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
31 # Flavour items |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
32 # extra cans on shelf |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
33 self.add_thing(GenericDescThing('mess.cans', 1, |
295
4a9f29bae9b0
more full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
294
diff
changeset
|
34 "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
|
35 ( |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
36 (154, 335, 89, 106), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
37 (152, 435, 63, 66), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
38 ))) |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
39 self.add_thing(GenericDescThing('mess.broccoli', 2, |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
40 "An impressively overgrown broccoli.", |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
41 ( |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
42 (503, 89, 245, 282), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
43 (320, 324, 229, 142), |
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
44 ))) |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
45 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
46 |
221 | 47 class BaseCan(CloneableItem): |
48 """Base class for the cans""" | |
145 | 49 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
50 def interact_with_full_can(self, item): |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
51 return Result("You bang the cans together. It sounds like two" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
52 " cans being banged together.", |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
53 soundfile="can_hit.ogg") |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
54 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
55 def interact_with_dented_can(self, item): |
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
56 return self.interact_with_full_can(item) |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
57 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
58 def interact_with_empty_can(self, item): |
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
59 return self.interact_with_full_can(item) |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
60 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
61 def interact_with_machete(self, item): |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
62 return Result("You'd mangle it beyond usefulness.") |
191 | 63 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
64 def interact_with_canopener(self, item): |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
65 empty = EmptyCan('empty_can') |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
66 self.game.add_item(empty) |
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
67 self.game.replace_inventory_item(self.name, empty.name) |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
68 return Result("You open both ends of the can, discarding the" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
69 " hideous contents.") |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
70 |
221 | 71 |
72 class EmptyCan(BaseCan): | |
73 "After emptying the full can." | |
74 | |
75 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
|
76 CURSOR = CursorSprite('empty_can_cursor.png') |
221 | 77 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
78 def interact_with_titanium_leg(self, item): |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
79 return Result("Flattening the can doesn't look like a useful" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
80 " thing to do.") |
221 | 81 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
82 def interact_with_canopener(self, item): |
306
bd9a760eeb18
Hook up canopener. Fix for replace_inventory changes
Neil Muller <neil@dip.sun.ac.za>
parents:
302
diff
changeset
|
83 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
|
84 |
221 | 85 |
86 class FullCan(BaseCan): | |
145 | 87 "Found on the shelf." |
88 | |
89 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
|
90 CURSOR = CursorSprite('full_can_cursor.png') |
145 | 91 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
92 def interact_with_titanium_leg(self, item): |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
93 dented = DentedCan("dented_can") |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
94 self.game.add_item(dented) |
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
95 self.game.replace_inventory_item(self.name, dented.name) |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
96 return Result("You club the can with the femur. The can gets dented," |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
97 " but doesn't open.", soundfile="can_hit.ogg") |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
98 |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
99 |
221 | 100 class DentedCan(BaseCan): |
167
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
101 "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
|
102 |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
103 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
|
104 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
|
105 |
491
9f488671c02e
No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents:
466
diff
changeset
|
106 def interact_with_titanium_leg(self, item): |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
107 return Result("You club the can with the femur. The dents shift" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
108 " around, but it still doesn't open.", |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
109 soundfile="can_hit.ogg") |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
192
diff
changeset
|
110 |
145 | 111 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
112 class CansOnShelf(Thing): |
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 NAME = "mess.cans" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
115 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
116 INTERACTS = { |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
117 '3cans': InteractImage(165, 209, 'shelf_3_cans.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
118 '2cans': InteractImage(165, 209, 'shelf_2_cans.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
119 '1cans': InteractImage(165, 209, 'shelf_1_can.png'), |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
120 '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
|
121 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
122 |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
123 INITIAL = '3cans' |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
124 |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
125 INITIAL_DATA = { |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
126 'cans_available': 3, |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
127 } |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
128 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
129 def interact_without(self): |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
130 starting_cans = self.get_data('cans_available') |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
131 if starting_cans > 0: |
192 | 132 can = FullCan("full_can") |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
133 self.game.add_item(can) |
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
134 self.game.add_inventory_item(can.name) |
223
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
135 self.set_data('cans_available', starting_cans - 1) |
10d3265f0bfa
Decreasing cans on shelf
Stefano Rivera <stefano@rivera.za.net>
parents:
221
diff
changeset
|
136 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
|
137 if starting_cans == 1: |
c3ff6ff879e6
Make the can Thing go away when it's empty.
Jeremy Thurgood <firxen@gmail.com>
parents:
296
diff
changeset
|
138 self.scene.remove_thing(self) |
192 | 139 return Result({ |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
140 3: "Best before a long time in the past." |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
141 " Better not eat these.", |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
142 2: "Mmmm. Nutritious bacteria stew.", |
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
143 1: "Candied silkworms. Who stocked this place?!", |
192 | 144 }[starting_cans]) |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
145 else: |
192 | 146 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
|
147 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
148 def get_description(self): |
224
8d8aef45db4e
fixed some typos
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
223
diff
changeset
|
149 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
|
150 |
143
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 class Tubes(Thing): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
153 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
154 NAME = "mess.tubes" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
155 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
156 INTERACTS = { |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
157 "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
|
158 "broken": InteractImage(250, 183, "broken_tubes.png"), |
416
1470a69d91ee
Vague art for pipes + taped pipes
Neil Muller <neil@dip.sun.ac.za>
parents:
409
diff
changeset
|
159 "replaced": InteractImage(250, 183, "replaced_tubes.png"), |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
160 "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
|
161 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
162 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
163 INITIAL = "blocked" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
164 |
226 | 165 INITIAL_DATA = { |
166 "status": "blocked", | |
167 } | |
168 | |
228
ce1e85768f7b
Flavour interactions for mess hall
Neil Muller <neil@dip.sun.ac.za>
parents:
226
diff
changeset
|
169 def get_description(self): |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
170 if self.get_data('status') == "blocked": |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
171 return ("The broccoli seems to have become" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
172 " entangled with something.") |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
173 elif self.get_data("status") == "broken": |
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
174 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
|
175 elif self.get_data("status") == "replaced": |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
176 return ("The pipes have been repaired but are the repairs" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
177 " aren't airtight, yet") |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
178 else: |
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
179 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
|
180 |
226 | 181 def interact_with_machete(self, item): |
182 if self.get_data("status") == "blocked": | |
183 self.set_data("status", "broken") | |
184 self.set_interact("broken") | |
264
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
185 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
|
186 "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
|
187 "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
|
188 "They look important.", |
230
ec2682b373e7
Add chopping sound. Tweak mess descriptions
Neil Muller <neil@dip.sun.ac.za>
parents:
228
diff
changeset
|
189 soundfile='chopping.ogg') |
226 | 190 elif self.get_data("status") == "broken": |
191 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
|
192 elif self.get_data("status") == "replaced": |
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
193 return Result("Cutting holes won't repair the leaks.") |
226 | 194 else: |
264
3cedc4f95925
Ran pyflakes and fixed some minor things.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
195 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
|
196 "bits doesn't seem very smart.") |
226 | 197 |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
198 def interact_with_cryo_pipes_three(self, item): |
226 | 199 if self.get_data("status") == "blocked": |
200 return Result("It would get lost in the fronds.") | |
201 else: | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
202 self.game.remove_inventory_item(item.name) |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
203 self.set_data('status', 'replaced') |
409
72baf5bfebc6
Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents:
392
diff
changeset
|
204 self.set_interact("replaced") |
72baf5bfebc6
Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents:
392
diff
changeset
|
205 self.scene.set_data('life support status', 'replaced') |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
206 return Result("The pipes slot neatly into place, but don't make" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
207 " an airtight seal. One of the pipes has cracked" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
208 " slightly as well.") |
226 | 209 |
210 def interact_with_duct_tape(self, item): | |
211 if self.get_data("status") == "broken": | |
212 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
|
213 elif self.get_data("status") == 'fixed': |
226 | 214 return Result("There's quite enough tape on the ducting already.") |
215 else: | |
216 self.set_data("fixed", True) | |
217 self.set_data("status", "fixed") | |
218 self.set_interact("fixed") | |
409
72baf5bfebc6
Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents:
392
diff
changeset
|
219 self.scene.set_data('life support status', 'fixed') |
226 | 220 # TODO: A less anticlimactic climax? |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
221 return Result("It takes quite a lot of tape, but eventually" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
222 "everything is airtight and ready to hold pressure." |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
223 " Who'd've thought duct tape could actually be used" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
224 " to tape ducts?") |
226 | 225 |
435 | 226 def interact_without(self): |
227 if self.get_data("status") == "blocked": | |
228 return Result("The mutant broccoli resists your best efforts.") | |
229 elif self.get_data("status") == "broken": | |
230 return Result("Shoving the broken pipes around doesn't help much.") | |
231 elif self.get_data("status") == "replaced": | |
232 return Result("Do you really want to hold it together for the " | |
233 "rest of the voyage?") | |
234 else: | |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
235 return Result("You don't find any leaks. Good job, Prisoner %s." |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
236 % PLAYER_ID) |
435 | 237 |
348
c193cbff785d
The environment / pipe puzzle is now solveable
Stefano Rivera <stefano@rivera.za.net>
parents:
322
diff
changeset
|
238 |
419 | 239 class Boomslang(Thing): |
240 NAME = 'mess.boomslang' | |
241 | |
242 INTERACTS = { | |
243 'snake': InteractAnimated(455, 241, ( | |
244 'boomslang_no_tongue.png', 'boomslang_with_tongue.png', | |
245 'boomslang_no_tongue.png', 'boomslang_with_tongue.png', | |
246 'boomslang_no_tongue.png', | |
247 ), 5), | |
248 'no_snake': InteractNoImage(0, 0, 0, 0), | |
249 } | |
250 | |
251 INITIAL = 'no_snake' | |
252 | |
253 INITIAL_DATA = { | |
254 'anim_pos': -1, | |
255 } | |
256 | |
566
ea9dd2b9186a
Hook up sound in gamelib/scenes.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
549
diff
changeset
|
257 HISS = 'boomslang.ogg' |
ea9dd2b9186a
Hook up sound in gamelib/scenes.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
549
diff
changeset
|
258 |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
491
diff
changeset
|
259 def is_interactive(self, tool=None): |
419 | 260 return False |
261 | |
262 def animate(self): | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
263 hiss = self.game.gd.sound.get_sound(self.HISS) |
419 | 264 if self.get_data('anim_pos') > -1: |
265 self.current_interact.animate() | |
266 if self.get_data('anim_pos') > self.current_interact._anim_pos: | |
267 self.set_interact('no_snake') | |
268 self.set_data('anim_pos', -1) | |
269 else: | |
270 self.set_data('anim_pos', self.current_interact._anim_pos) | |
271 return True | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
272 if randint(0, 30 * self.game.gd.constants.frame_rate) == 0: |
419 | 273 self.set_interact('snake') |
274 self.set_data('anim_pos', 0) | |
570
9c3528c2cbe5
Bug fixes for sound hook-up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
566
diff
changeset
|
275 hiss.play() |
419 | 276 return False |
277 | |
278 | |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
279 class DetergentThing(Thing): |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
280 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
281 NAME = "mess.detergent" |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
282 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
283 INTERACTS = { |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
284 'present': InteractImageRect(581, 424, 'detergent_lid.png', |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
285 565, 399, 62, 95), |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
286 'taken': InteractNoImage(565, 399, 62, 95), |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
287 } |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
288 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
289 INITIAL = 'present' |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
290 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
291 INITIAL_DATA = { |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
292 'taken': False, |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
293 } |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
294 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
295 def interact_without(self): |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
296 if self.get_data('taken'): |
435 | 297 return Result("The remaining bottles leak.") |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
298 self.set_data('taken', True) |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
299 self.set_interact('taken') |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
300 self.game.add_inventory_item('detergent_bottle') |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
301 return Result("You pick up an empty dishwashing liquid bottle. You" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
302 " can't find any sponges.") |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
303 |
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
304 def get_description(self): |
322 | 305 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
|
306 |
363
2cadb47405a4
Use bottle image. The boomslang is now triangle-free
Stefano Rivera <stefano@rivera.za.net>
parents:
348
diff
changeset
|
307 |
296
86e3d5dd7fa6
Added detergent bottle Item and InteractImageRect class
Stefano Rivera <stefano@rivera.za.net>
parents:
295
diff
changeset
|
308 class DetergentBottle(Item): |
363
2cadb47405a4
Use bottle image. The boomslang is now triangle-free
Stefano Rivera <stefano@rivera.za.net>
parents:
348
diff
changeset
|
309 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
|
310 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
|
311 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
312 |
242 | 313 class ToMap(Door): |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
314 |
252
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
315 SCENE = "mess" |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
316 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
317 INTERACTS = { |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
318 "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
|
319 } |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
320 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
321 INITIAL = "door" |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
322 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
323 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
324 SCENES = [Mess] |