Mercurial > pyntnclick
annotate gamelib/scenes/mess.py @ 191:278774b31d3c
CloneableItems.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Wed, 25 Aug 2010 21:32:38 +0200 |
parents | 3d3efc5648cc |
children | b1f4262139e7 |
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 |
191 | 5 from gamelib.state import Scene, Item, CloneableItem, Thing, InteractImage, InteractNoImage, Result |
145 | 6 from gamelib.cursor import CursorSprite |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
7 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
8 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
9 class Mess(Scene): |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
10 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
11 FOLDER = "mess" |
140
95d882eeba12
Link up mess hall background.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
12 BACKGROUND = "mess_hall.png" |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
13 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
14 INITIAL_DATA = { |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
15 'accessible': True, |
47
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 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
18 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
|
19 super(Mess, self).__init__(state) |
145 | 20 self.add_item(EmptyCan("empty_can")) |
21 self.add_item(FullCan("full_can")) | |
22 self.add_item(TubeFragments("tube_fragments")) | |
23 self.add_item(ReplacementTubes("replacement_tubes")) | |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
24 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
|
25 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
|
26 self.add_thing(ToMap()) |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
27 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
28 |
191 | 29 class EmptyCan(CloneableItem): |
145 | 30 "After emptying the full can." |
31 | |
32 INVENTORY_IMAGE = "empty_can.png" | |
168 | 33 CURSOR = CursorSprite('empty_can_cursor.png', 20, 30) |
145 | 34 |
191 | 35 |
36 class FullCan(CloneableItem): | |
145 | 37 "Found on the shelf." |
38 | |
39 INVENTORY_IMAGE = "full_can.png" | |
168 | 40 CURSOR = CursorSprite('full_can_cursor.png', 20, 30) |
145 | 41 |
191 | 42 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
|
43 dented = DentedCan("dented_can") |
191 | 44 state.add_item(dented) |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
45 state.replace_inventory_item(self, dented) |
167
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
46 return Result("You club the can with the femur. The can gets dented, but doesn't open.") |
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
47 |
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
48 |
191 | 49 class DentedCan(CloneableItem): |
167
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
50 "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
|
51 |
170
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
52 INVENTORY_IMAGE = "dented_can.png" |
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
53 CURSOR = CursorSprite('dented_can_cursor.png', 20, 30) |
179913efac85
Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents:
168
diff
changeset
|
54 |
191 | 55 def interact_with_titanium_leg(self, item, state): |
167
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
56 return Result("You club the can with the femur. The dents shift around, but it still doesn't open.") |
5845a3ed4dad
Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents:
151
diff
changeset
|
57 |
145 | 58 |
59 class TubeFragments(Item): | |
60 "Old tubes that need repair." | |
61 | |
62 INVENTORY_IMAGE = "tube_fragments.png" | |
168 | 63 CURSOR = CursorSprite('tube_fragments_cursor.png', 3, 60) |
145 | 64 |
65 | |
66 class ReplacementTubes(Item): | |
67 "Repaired tubes." | |
68 | |
69 INVENTORY_IMAGE = "replacement_tubes.png" | |
168 | 70 CURSOR = CursorSprite('replacement_tubes.png', 53, 46) |
145 | 71 |
72 | |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
73 class CansOnShelf(Thing): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
74 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
75 NAME = "mess.cans" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
76 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
77 INTERACTS = { |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
78 "cans": InteractImage(165, 209, "cans_on_shelf.png"), |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
79 "nocans": InteractNoImage(165, 209, 50, 50), |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
80 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
81 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
82 INITIAL = "cans" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
83 |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
84 INITIAL_DATA = { |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
85 'taken_one': False, |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
86 } |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
87 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
88 def interact_without(self): |
191 | 89 can = FullCan("full_can") |
90 self.state.add_item(can) | |
91 self.state.add_inventory_item(can.name) | |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
92 if not self.data['taken_one']: |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
93 self.set_data('taken_one', True) |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
94 return Result("Best before along time in the past. Better not eat these.") |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
95 else: |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
96 return Result(choice(( |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
97 'Another can of imitation chicken? Great.', |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
98 'Mmmm. Nutritious Bacteria Stew.', |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
99 "The label has rusted off, I don't want to know what's inside.", |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
100 "I hope I don't get hungry enough to open these.", |
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
101 ))) |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
102 |
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
103 def get_description(self): |
175
3d3efc5648cc
Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents:
170
diff
changeset
|
104 return "The contents of these cans looks synthetic." |
146
1be149cc42db
Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
145
diff
changeset
|
105 |
143
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
106 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
107 class Tubes(Thing): |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
108 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
109 NAME = "mess.tubes" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
110 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
111 INTERACTS = { |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
112 "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
|
113 "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
|
114 "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
|
115 } |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
116 |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
117 INITIAL = "blocked" |
d15270c2898c
Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
140
diff
changeset
|
118 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
119 |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
120 class ToMap(Thing): |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
121 "Way to map." |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
122 |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
150
diff
changeset
|
123 NAME = "mess.tomap" |
150
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
124 DEST = "map" |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
125 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
126 INTERACTS = { |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
127 "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
|
128 } |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
129 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
130 INITIAL = "door" |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
131 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
132 def interact_without(self): |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
133 """Go to map.""" |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
134 self.state.set_current_scene("map") |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
135 |
5e5d71e40e54
Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
146
diff
changeset
|
136 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
137 SCENES = [Mess] |