annotate skaapsteker/sprites/items.py @ 630:2707b33cbcb7

Unbreak breakable items
author Neil Muller <drnlmuller@gmail.com>
date Wed, 29 Jun 2011 18:30:50 +0200
parents da331c80ec08
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
529
0ffb493a6fa4 Add support for sounds for breaking objects.
Simon Cross <hodgestar@gmail.com>
parents: 525
diff changeset
1 from .. import engine, data, sound
551
40a104ca0a69 Tear kimono
Neil Muller <drnlmuller@gmail.com>
parents: 543
diff changeset
2 from .base import Item, PC_LAYER, PROJECTILE_LAYER, notify
442
a084af91d5dc Make breakable items break
Neil Muller <drnlmuller@gmail.com>
parents: 434
diff changeset
3
474
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
4 import time
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
5
127
e1dd3b785269 Initial game state stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6
e1dd3b785269 Initial game state stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7
388
de71c3fa5626 Tea notification stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 383
diff changeset
8
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
9 class BreakableItem(Item):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
10 whole_image_file = None
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
11 broken_image_file = None
532
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
12 breaking_sound = None, None
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
13
442
a084af91d5dc Make breakable items break
Neil Muller <drnlmuller@gmail.com>
parents: 434
diff changeset
14 collides_with = set([PC_LAYER, PROJECTILE_LAYER])
a084af91d5dc Make breakable items break
Neil Muller <drnlmuller@gmail.com>
parents: 434
diff changeset
15
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
16 def setup(self, broken, **opts):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
17 super(BreakableItem, self).setup(**opts)
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
18 self.broken = broken
529
0ffb493a6fa4 Add support for sounds for breaking objects.
Simon Cross <hodgestar@gmail.com>
parents: 525
diff changeset
19 if self.breaking_sound[0] is not None:
0ffb493a6fa4 Add support for sounds for breaking objects.
Simon Cross <hodgestar@gmail.com>
parents: 525
diff changeset
20 track, volume = self.breaking_sound
0ffb493a6fa4 Add support for sounds for breaking objects.
Simon Cross <hodgestar@gmail.com>
parents: 525
diff changeset
21 sound.load_sound(track, track, volume)
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
22
630
2707b33cbcb7 Unbreak breakable items
Neil Muller <drnlmuller@gmail.com>
parents: 622
diff changeset
23 def setup_image_data(self, pos, **opts):
2707b33cbcb7 Unbreak breakable items
Neil Muller <drnlmuller@gmail.com>
parents: 622
diff changeset
24 self.image_file = self.broken_image_file if opts['broken'] else self.whole_image_file
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
25 super(BreakableItem, self).setup_image_data(pos)
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
26
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
27
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
28 def smash(self):
532
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
29 if not self._me.broken:
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
30 self._me.broken = True
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
31 self.broken = True
630
2707b33cbcb7 Unbreak breakable items
Neil Muller <drnlmuller@gmail.com>
parents: 622
diff changeset
32 self.setup_image_data(self.get_tile_pos(), broken=self.broken)
532
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
33 if self.breaking_sound[0] is not None:
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
34 sound.play_sound(self.breaking_sound[0])
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
35
442
a084af91d5dc Make breakable items break
Neil Muller <drnlmuller@gmail.com>
parents: 434
diff changeset
36 def damage(self, damage):
a084af91d5dc Make breakable items break
Neil Muller <drnlmuller@gmail.com>
parents: 434
diff changeset
37 self.smash()
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
38
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
39
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
40 ##################################################
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
41 # Collectibles
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
42
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
43 class Aburage(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
44 image_file = 'props/tofu.png'
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
45
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
46 def player_action(self, player):
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
47 player.eat_aburage()
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
48 self.remove()
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
49
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
50
340
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
51 class HaikuScroll(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
52 image_file = 'props/haiku-scroll.png'
340
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
53
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
54 def player_action(self, player):
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
55 player.collect_scroll(self)
522
4de4f94c326d Move skaapsteker behind stuff and make haiku scrolls display text on collection.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
56 notify("The scroll looks like a fragment of a haiku: '%s'" % self.text)
340
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
57 self.remove()
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
58
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
59
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
60 def setup(self, text, **opts):
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
61 super(HaikuScroll, self).setup(**opts)
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
62 self.text = text
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
63
f870e3122ac7 Collect haiku scrolls.
Jeremy Thurgood <firxen@gmail.com>
parents: 335
diff changeset
64
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
65
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
66 ##################################################
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
67 # Monk tea mission
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
68
189
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
69 class TeaCup(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
70 image_file = 'props/teacup_empty.png'
189
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
71
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
72
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
73 class TeaLeaf(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
74 image_file = 'props/tealeaf.png'
127
e1dd3b785269 Initial game state stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
75
189
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
76
191
993f4f55eb93 Minor item changes.
Jeremy Thurgood <firxen@gmail.com>
parents: 189
diff changeset
77 class TeaCupFull(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
78 image_file = 'props/teacup_full.png'
191
993f4f55eb93 Minor item changes.
Jeremy Thurgood <firxen@gmail.com>
parents: 189
diff changeset
79
993f4f55eb93 Minor item changes.
Jeremy Thurgood <firxen@gmail.com>
parents: 189
diff changeset
80
189
9d08f99b5ddf Add npcs to gamestate. Update gamestate. Pass world around a bit. Some other stuff.
Simon Cross <hodgestar@gmail.com>
parents: 162
diff changeset
81 class TeaPot(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
82 image_file = 'props/teapot.png'
237
e06c54d7701f Add vase to demonstrate item state testing in dialogues.
Simon Cross <hodgestar@gmail.com>
parents: 191
diff changeset
83
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
84 def setup(self, brewed, **opts):
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
85 super(TeaPot, self).setup(**opts)
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
86
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
87
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
88 def player_action(self, player):
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
89 if player.has_item('tealeaf'):
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
90 self._me.brewed = True
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
91 player.discard_item()
388
de71c3fa5626 Tea notification stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 383
diff changeset
92 notify("A nice cup of tea is brewing.")
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
93 return
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
94 if player.has_item('teacup'):
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
95 if self._me.brewed:
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
96 player.discard_item()
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
97 player.take_item_by_name('teacupfull')
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
98 self._me.brewed = False
403
2da0db41cdf0 edited items text
anna <annamalczyk@gmail.com>
parents: 397
diff changeset
99 notify("You pour a cup of tea.")
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
100 else:
388
de71c3fa5626 Tea notification stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 383
diff changeset
101 notify("Sadly, the teapot is empty.")
383
87246b84a851 Notification text.
Jeremy Thurgood <firxen@gmail.com>
parents: 354
diff changeset
102 return
388
de71c3fa5626 Tea notification stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 383
diff changeset
103 notify("A proper tea ceremony requires a cup.")
296
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
104
15b2be883a40 Ancient and honorable tea ceremony.
Jeremy Thurgood <firxen@gmail.com>
parents: 237
diff changeset
105
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
106
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
107 ##################################################
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
108 # Guard seduction
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
109
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
110
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
111 class Fan(Item):
397
00dbc053f9a0 Some item maintenance.
Jeremy Thurgood <firxen@gmail.com>
parents: 395
diff changeset
112 image_file = 'props/fan.png'
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
113
395
135cbb99511f Hook up fan.
Jeremy Thurgood <firxen@gmail.com>
parents: 388
diff changeset
114 def player_action(self, player):
135cbb99511f Hook up fan.
Jeremy Thurgood <firxen@gmail.com>
parents: 388
diff changeset
115 player.get_fan(self)
135cbb99511f Hook up fan.
Jeremy Thurgood <firxen@gmail.com>
parents: 388
diff changeset
116
135cbb99511f Hook up fan.
Jeremy Thurgood <firxen@gmail.com>
parents: 388
diff changeset
117
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
118
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
119 ##################################################
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
120 # Samurai distraction
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
121
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
122
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
123 class Kindling(Item):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
124 image_file = 'props/kindling.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
125
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
126
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
127 class Oil(Item):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
128 image_file = 'props/oil.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
129
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
130
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
131 class SignalFire(Item):
432
e65f6783a9f7 placed fire on the road; animation not yet hooked up
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 417
diff changeset
132 image_file = 'props/signal_fire/signal_fire_unlit.png'
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
133
474
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
134 animation_files = ['props/signal_fire/signal_fire_lit01.png',
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
135 'props/signal_fire/signal_fire_lit02.png',
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
136 'props/signal_fire/signal_fire_lit03.png',
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
137 'props/signal_fire/signal_fire_lit04.png']
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
138
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
139 wants_updates = True
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
140
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
141 def setup(self, litness, **opts):
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
142 super(SignalFire, self).setup(**opts)
474
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
143 self._last_time = None
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
144 self._frame = 0
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
145 self.animations = [data.load_image(self.image_dir + x) for x in self.animation_files]
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
146
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
147
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
148 def player_action(self, player):
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
149 if self._me.litness == 'set':
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
150 if player.has_item('kindling'):
417
e289a111c743 edited item text
anna <annamalczyk@gmail.com>
parents: 412
diff changeset
151 notify("You put the kindling in the signal fire.")
515
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
152 self._me.litness = 'kindled'
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
153 elif player.has_item('oil'):
417
e289a111c743 edited item text
anna <annamalczyk@gmail.com>
parents: 412
diff changeset
154 notify("You pour the oil on the signal fire.")
515
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
155 self._me.litness = 'oiled'
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
156 else:
515
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
157 notify("This signal fire needs some oil and kindling before it can be lit.")
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
158 return
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
159 player.discard_item()
515
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
160
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
161 elif self._me.litness in ['oiled', 'kindled']:
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
162 if player.has_item('kindling'):
417
e289a111c743 edited item text
anna <annamalczyk@gmail.com>
parents: 412
diff changeset
163 notify("You put the kindling on the signal fire and light it.")
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
164 elif player.has_item('oil'):
417
e289a111c743 edited item text
anna <annamalczyk@gmail.com>
parents: 412
diff changeset
165 notify("You pour the oil on the signal fire and light it.")
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
166 else:
515
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
167 if self._me.litness == 'oiled':
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
168 notify("This fire still needs some kindling before it can be lit.")
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
169 else:
6c21ba7de1e6 Better signal fire interaction.
Jeremy Thurgood <firxen@gmail.com>
parents: 490
diff changeset
170 notify("This fire still needs some oil before it can be lit.")
412
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
171 return
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
172 player.discard_item()
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
173 self._me.litness = 'burning'
8ac5b3d619fe Signal fire.
Jeremy Thurgood <firxen@gmail.com>
parents: 406
diff changeset
174 self.world.missions.fire_started_on_road = True
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
175
474
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
176 def update(self):
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
177 if self._me.litness != 'burning':
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
178 return
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
179 if self._last_time is None:
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
180 self._last_time = time.time()
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
181 return
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
182 if time.time() - self._last_time > 0.1:
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
183 self._last_time = time.time()
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
184 self._frame += 1
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
185 if self._frame >= len(self.animations):
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
186 self._frame = 0
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
187 pos = self.rect.midbottom
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
188 self.image = self.animations[self._frame]
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
189 self.rect = self.image.get_rect(midbottom=pos)
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
190 self.collide_rect = self.rect.move(0, 0)
9e85c30dd12f Animate signal fire
Neil Muller <drnlmuller@gmail.com>
parents: 473
diff changeset
191
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
192
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
193 ##################################################
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
194 # Cannon destruction
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
195
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
196
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
197 class Cannon(BreakableItem):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
198 whole_image_file = 'props/cannon-whole.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
199 broken_image_file = 'props/cannon-broken.png'
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
200
434
827c5d045cf5 Don't allow the cannon to be picked up
Neil Muller <drnlmuller@gmail.com>
parents: 432
diff changeset
201 liftable = False
827c5d045cf5 Don't allow the cannon to be picked up
Neil Muller <drnlmuller@gmail.com>
parents: 432
diff changeset
202
525
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
203 def setup(self, block, **opts):
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
204 super(Cannon, self).setup(**opts)
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
205 self.block = block
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
206
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
207 def smash(self):
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
208 self._me.block = False
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
209 self.block = False
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
210 super(Cannon, self).smash()
8087e95ade2f More cannon stuff
Neil Muller <drnlmuller@gmail.com>
parents: 522
diff changeset
211 self.world.missions.cannon_destroyed = True
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
212
237
e06c54d7701f Add vase to demonstrate item state testing in dialogues.
Simon Cross <hodgestar@gmail.com>
parents: 191
diff changeset
213
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
214 ##################################################
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
215 # Geisha character assassination
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
216
237
e06c54d7701f Add vase to demonstrate item state testing in dialogues.
Simon Cross <hodgestar@gmail.com>
parents: 191
diff changeset
217
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
218 class Vase(BreakableItem):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
219 whole_image_file = 'props/vase-whole.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
220 broken_image_file = 'props/vase-broken.png'
532
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
221 breaking_sound = 'sounds/vase breaking.ogg', 0.1
297
2844edb6c1cc Hook up maneki, kaneda2 and the fishmonger who were hiding in limbo (i.e. not in game.json).
Simon Cross <hodgestar@gmail.com>
parents: 296
diff changeset
222
535
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
223 liftable = False
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
224
559
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
225 def smash(self):
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
226 if not self._me.broken:
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
227 notify('Oh no, my beautiful vase! What will the businessman think '
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
228 'to see it broken on the floor?')
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
229 super(Vase, self).smash()
c4b14a517500 Parital geisha mission
Neil Muller <drnlmuller@gmail.com>
parents: 551
diff changeset
230
297
2844edb6c1cc Hook up maneki, kaneda2 and the fishmonger who were hiding in limbo (i.e. not in game.json).
Simon Cross <hodgestar@gmail.com>
parents: 296
diff changeset
231
2844edb6c1cc Hook up maneki, kaneda2 and the fishmonger who were hiding in limbo (i.e. not in game.json).
Simon Cross <hodgestar@gmail.com>
parents: 296
diff changeset
232 class Salmon(Item):
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
233 image_file = 'props/fish.png'
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
234
567
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
235 def __init__(self, *args, **kw):
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
236 super(Salmon, self).__init__(*args, **kw)
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
237 if self._me.level == 'geisha_room':
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
238 self.wants_updates = True
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
239
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
240 def update(self):
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
241 self.world.missions.fish_in_room = True
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
242 self.remove()
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
243 notify("What's that horrible smell?")
488cad3bd62b Finish geisha fish subplot.
Jeremy Thurgood <firxen@gmail.com>
parents: 559
diff changeset
244
335
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
245
c6552e9fc2e1 Added aburage.
Jeremy Thurgood <firxen@gmail.com>
parents: 297
diff changeset
246
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
247 ##################################################
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
248 # Theatrical debut
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
249
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
250
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
251 class NoMask(BreakableItem):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
252 whole_image_file = 'props/no-mask-whole.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
253 broken_image_file = 'props/no-mask-broken.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
254
535
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
255 liftable = False
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
256
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
257
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
258 def smash(self):
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
259 super(NoMask, self).smash()
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
260 if self.world.items.no_costume.level == '_limbo':
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
261 self.world.missions.masks_destroyed = True
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
262
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
263
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
264
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
265 class NoCostume(Item):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
266 image_file = 'props/no-costume.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
267
535
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
268 def player_action(self, player):
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
269 self.remove()
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
270 notify("I think I'll hide this away somewhere.")
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
271 if self.world.items.no_mask.broken:
d7f3329a6bf8 Fix theatre mission.
Jeremy Thurgood <firxen@gmail.com>
parents: 532
diff changeset
272 self.world.missions.masks_destroyed = True
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
273
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
274
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
275 ##################################################
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
276 # Big business
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
277
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
278
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
279 class Rice(BreakableItem):
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
280 whole_image_file = 'props/rice-whole.png'
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
281 broken_image_file = 'props/rice-broken.png'
532
eec2cf912e03 Add tearing rice sound. Only smash breakables once.
Simon Cross <hodgestar@gmail.com>
parents: 529
diff changeset
282 breaking_sound = 'sounds/tearing-rice bag.ogg', 0.2
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
283
573
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
284 liftable = False
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
285
573
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
286 def smash(self):
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
287 super(Rice, self).smash()
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
288 if self.world.items.documents.broken:
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
289 self.world.missions.kanedas_agreement_disrupted = True
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
290
354
b37dbc557ae0 Stub classes for all items.
Jeremy Thurgood <firxen@gmail.com>
parents: 340
diff changeset
291
573
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
292 class Documents(BreakableItem):
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
293 whole_image_file = 'props/documents.png'
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
294 broken_image_file = 'props/documents.png'
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
295
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
296 msg = "Let's see if they notice if I add a zero."
543
f36e7a885373 Add document altering
Neil Muller <drnlmuller@gmail.com>
parents: 535
diff changeset
297
f36e7a885373 Add document altering
Neil Muller <drnlmuller@gmail.com>
parents: 535
diff changeset
298 def player_action(self, player):
573
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
299 if not self._me.broken:
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
300 notify(self.msg)
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
301 super(Documents, self).smash()
ebca2f14517f made agreement depend on both rice and document; made table square
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 567
diff changeset
302 if self.world.items.rice.broken:
543
f36e7a885373 Add document altering
Neil Muller <drnlmuller@gmail.com>
parents: 535
diff changeset
303 self.world.missions.kanedas_agreement_disrupted = True
f36e7a885373 Add document altering
Neil Muller <drnlmuller@gmail.com>
parents: 535
diff changeset
304
f36e7a885373 Add document altering
Neil Muller <drnlmuller@gmail.com>
parents: 535
diff changeset
305
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
306 ##################################################
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
307 # Tails
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
308
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
309 class Tail(Item):
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
310
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
311 image_dir = 'icons/tails/'
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
312 image_file = None
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
313 tail_type = None
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
314 help_msg = None
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
315
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
316 def player_action(self, player):
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
317 player.add_tail(self.tail_type)
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
318 notify(self.help_msg)
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
319 self.remove()
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
320
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
321
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
322 class ShapeshiftTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
323 image_file = 'shapeshift.png'
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
324 tail_type = 'shapeshift'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
325 help_msg = "Shapeshifting tail. Press C to shape shift." \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
326 " Your powers are more limited while in human form."
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
327
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
328
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
329 class FireballTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
330 image_file = 'fireball.png'
470
3b680634c546 Start of tails.
Simon Cross <hodgestar@gmail.com>
parents: 442
diff changeset
331 tail_type = 'fireball'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
332 help_msg = "Fireball tail. The X attack key now shoots fireballs."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
333
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
334
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
335 class SprintTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
336 image_file = 'sprint.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
337 tail_type = 'sprint'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
338 help_msg = "Sprint tail. Double-tap the left or right arrow key to" \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
339 " sprint for a few seconds."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
340
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
341
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
342 class InvisibilityTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
343 image_file = 'invisibility.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
344 tail_type = 'invisibility'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
345 help_msg = "Invisibility tail. Press V to become invisible for a few seconds." \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
346 " You become visible again if you attack or interact with others."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
347
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
348
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
349 class FlightTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
350 image_file = 'flight.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
351 tail_type = 'flight'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
352 help_msg = "Flight tail. Double-tap up to fly. Press down while on the ground to land." \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
353 " If you stay in the air too long you'll tire and fall."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
354
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
355
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
356 class ShieldTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
357 image_file = 'shield.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
358 tail_type = 'shield'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
359 help_msg = "Shield tail. If you get hit, your mystical shield will protect you for" \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
360 " one second. After that it'll need a little time to recharge."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
361
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
362
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
363 class StealTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
364 image_file = 'steal.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
365 tail_type = 'steal'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
366 help_msg = "Life-stealing tail. If you projectiles hit your enemies, you steal some" \
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
367 " of their life."
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
368
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
369
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
370 class LightningTail(Tail):
490
0eade58a71b9 Support item dropping (specifically tails). Have monk drop tail.
Simon Cross <hodgestar@gmail.com>
parents: 489
diff changeset
371 image_file = 'lightning.png'
473
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
372 tail_type = 'lightning'
14cab059bf39 More tails.
Simon Cross <hodgestar@gmail.com>
parents: 470
diff changeset
373 help_msg = "Lightning tail. The Z attack now shoots lightning bolts."