annotate gamelib/scenes/bridge.py @ 228:ce1e85768f7b

Flavour interactions for mess hall
author Neil Muller <neil@dip.sun.ac.za>
date Thu, 26 Aug 2010 23:11:32 +0200
parents b03debaec72d
children b0add10f7556
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 """Bridge where the final showdown with the AI occurs."""
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
2
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
3 from gamelib.cursor import CursorSprite
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
4 from gamelib.state import Scene, Item, Thing, Result, InteractText
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
5
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
6 class Bridge(Scene):
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
7
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
8 FOLDER = "bridge"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
9 BACKGROUND = None # TODO
47
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 INITIAL_DATA = {
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
12 'accessible': True,
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
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
15 def __init__(self, state):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
16 super(Bridge, self).__init__(state)
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
17 self.add_item(Superconductor('superconductor'))
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
18 self.add_item(Stethoscope('stethoscope'))
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
19 self.add_thing(ToMap())
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
20 self.add_thing(MassageChair())
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
21 self.add_thing(StethoscopeThing())
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
22
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
23 def enter(self):
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
24 return Result("The bridge is in a sorry, shabby state")
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
25
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
26
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
27 class ToMap(Thing):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
28 "Way to map."
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
29
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
30 NAME = "bridge.tomap"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
31 DEST = "map"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
32
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
33 INTERACTS = {
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
34 "door": InteractText(100, 200, "To Map"),
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
35 }
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
36
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
37 INITIAL = "door"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
38
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
39 def interact_without(self):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
40 """Go to map."""
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
41 self.state.set_current_scene("map")
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
42
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
43
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
44 class MassageChair(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
45 "The captain's massage chair, contains superconductor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
46
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
47 NAME = 'bridge.massagechair'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
48
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
49 INTERACTS = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
50 'chair': InteractText(200, 200, 'Chair'),
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
51 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
52
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
53 INITIAL = 'chair'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
54
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
55 INITIAL_DATA = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
56 'contains_superconductor': True,
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
57 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
58
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
59 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
60 return Result(detail_view='chair_detail')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
61
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
62 def get_description(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
63 if self.get_data('contains_superconductor'):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
64 return "A top of the line Massage-o-Matic Captain's Executive Command Chair."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
65 return "The chair won't work any more, it has no power."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
66
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
67
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
68 class Stethoscope(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
69 "Used for cracking safes. Found on the doctor on the chair"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
70
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
71 INVENTORY_IMAGE = 'triangle.png'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
72 CURSOR = CursorSprite('triangle.png', 20, 30)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
73
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
74
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
75 class StethoscopeThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
76 "Stehoscope on the doctor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
77
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
78 NAME ='bridge.stethoscope'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
79
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
80 INTERACTS = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
81 'stethoscope': InteractText(300, 200, 'Stethoscope'),
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
82 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
83
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
84 INITIAL = 'stethoscope'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
85
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
86 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
87 self.state.add_inventory_item('stethoscope')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
88 self.scene.remove_thing(self)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
89 return Result("You pick up the stethoscope and verify that the doctor's "
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
90 "heart has stoped. Probably a while ago.")
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
91
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
92
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
93 class Superconductor(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
94 "Used for connecting high-powered parts of the ship up"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
95
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
96 INVENTORY_IMAGE = 'triangle.png'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
97 CURSOR = CursorSprite('triangle.png', 20, 30)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
98
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
99
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
100 class SuperconductorThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
101 "Superconductor from the massage chair."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
102
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
103 NAME ='bridge.superconductor'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
104
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
105 INTERACTS = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
106 'superconductor': InteractText(100, 200, 'Superconductor'),
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
107 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
108
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
109 INITIAL = 'superconductor'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
110
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
111 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
112 self.state.add_inventory_item('superconductor')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
113 self.state.current_scene.things['bridge.massagechair'] \
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
114 .set_data('contains_superconductor', False)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
115 self.scene.remove_thing(self)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
116 return Result("You pick up the stethoscope and verify that the doctor's "
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
117 "heart has stoped. Probably a while ago.")
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
118
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
119 class ChairDetail(Scene):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
120
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
121 FOLDER = 'bridge'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
122 BACKGROUND = 'chair_detail.png'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
123 NAME = 'chair_detail'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
124
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
125 SIZE = (300, 300)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
126
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
127 def __init__(self, state):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
128 super(ChairDetail, self).__init__(state)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
129 self.add_thing(SuperconductorThing())
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
130
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
131
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
132 SCENES = [Bridge]
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
133 DETAIL_VIEWS = [ChairDetail]