annotate gamelib/scenes/mess.py @ 816:eed75a1d50c4 pyntnclick

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