Mercurial > rinkhals
annotate gamelib/equipment.py @ 448:92e7a641b4a6
added units to price list
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Sat, 21 Nov 2009 20:02:33 +0000 |
parents | db7bb20d2336 |
children | 3ed6c011106d |
rev | line source |
---|---|
84 | 1 """Stuff for animals to use.""" |
2 | |
3 import random | |
99
f5d56688943b
Added background music support, and daytime and night time music (really animal sounds, not music)
David Fraser <davidf@sjsoft.com>
parents:
84
diff
changeset
|
4 import sound |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
5 import imagecache |
202 | 6 import animations |
415
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
7 import serializer |
84 | 8 |
415
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
9 |
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
10 class Equipment(serializer.Simplifiable): |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
11 IS_EQUIPMENT = True |
161
9b4213f6ea7f
improved equipment layers; unequip method on animal
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
158
diff
changeset
|
12 DRAW_LAYER = 0 |
244
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
13 UNDER_LIMB = False |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
14 UNDER_EYE = False |
429
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
15 AMMUNITION = None |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
16 |
415
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
17 SIMPLIFY = [ |
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
18 '_buy_price', |
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
19 '_sell_price', |
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
20 '_name', |
429
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
21 'ammunition', |
415
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
22 ] |
8f012ef1f64f
Start of ability to serialize game state.
Simon Cross <hodgestar@gmail.com>
parents:
413
diff
changeset
|
23 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
24 def __init__(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
25 self._buy_price = self.BUY_PRICE |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
26 self._sell_price = self.SELL_PRICE |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
27 self._name = self.NAME |
429
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
28 self.refresh_ammo() |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
29 |
423
97dd557504a2
Override make methods for simplifiable objects.
Simon Cross <hodgestar@gmail.com>
parents:
422
diff
changeset
|
30 def make(cls): |
97dd557504a2
Override make methods for simplifiable objects.
Simon Cross <hodgestar@gmail.com>
parents:
422
diff
changeset
|
31 """Override default Simplifiable object creation.""" |
97dd557504a2
Override make methods for simplifiable objects.
Simon Cross <hodgestar@gmail.com>
parents:
422
diff
changeset
|
32 return cls() |
97dd557504a2
Override make methods for simplifiable objects.
Simon Cross <hodgestar@gmail.com>
parents:
422
diff
changeset
|
33 make = classmethod(make) |
97dd557504a2
Override make methods for simplifiable objects.
Simon Cross <hodgestar@gmail.com>
parents:
422
diff
changeset
|
34 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
35 def buy_price(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
36 return self._buy_price |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
37 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
38 def sell_price(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
39 return self._sell_price |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
40 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
41 def name(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
42 return self._name |
84 | 43 |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
44 def images(self, eq_image_attr): |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
45 eq_image_file = getattr(self, eq_image_attr, None) |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
46 if not eq_image_file: |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
47 return None |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
48 eq_image_left = imagecache.load_image(eq_image_file) |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
49 eq_image_right = imagecache.load_image(eq_image_file, ("right_facing",)) |
244
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
50 if eq_image_attr == "CHICKEN_IMAGE_FILE": |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
51 # a bit hacky; eventually the chicken should have a stack of images and layering should take care of everything |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
52 if self.UNDER_LIMB: |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
53 wing_left = imagecache.load_image("sprites/wing.png") |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
54 wing_right = imagecache.load_image("sprites/wing.png", ("right_facing",)) |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
55 eq_image_left.blit(wing_left, (0,0)) |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
56 eq_image_right.blit(wing_right, (0,0)) |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
57 if self.UNDER_EYE: |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
58 eye_left = imagecache.load_image("sprites/eye.png") |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
59 eye_right = imagecache.load_image("sprites/eye.png", ("right_facing",)) |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
60 eq_image_left.blit(eye_left, (0,0)) |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
61 eq_image_right.blit(eye_right, (0,0)) |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
62 return eq_image_left, eq_image_right, self.DRAW_LAYER |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
63 |
429
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
64 def refresh_ammo(self): |
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
65 self.ammunition = getattr(self, 'AMMUNITION', None) |
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
66 |
84 | 67 class Weapon(Equipment): |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
68 IS_WEAPON = True |
161
9b4213f6ea7f
improved equipment layers; unequip method on animal
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
158
diff
changeset
|
69 DRAW_LAYER = 10 |
244
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
70 UNDER_LIMB = True |
84 | 71 |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
72 def _get_parameter(self, parameter, wielder): |
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
73 param = getattr(self, parameter) |
198
355eaae40b1f
Buildings now affect weapon range and accuracy.
Jeremy Thurgood <firxen@gmail.com>
parents:
195
diff
changeset
|
74 if wielder.abode: |
355eaae40b1f
Buildings now affect weapon range and accuracy.
Jeremy Thurgood <firxen@gmail.com>
parents:
195
diff
changeset
|
75 mod_attr = 'MODIFY_%s_%s' % (self.TYPE, parameter) |
355eaae40b1f
Buildings now affect weapon range and accuracy.
Jeremy Thurgood <firxen@gmail.com>
parents:
195
diff
changeset
|
76 modifier = getattr(wielder.abode.building, mod_attr, lambda r: r) |
355eaae40b1f
Buildings now affect weapon range and accuracy.
Jeremy Thurgood <firxen@gmail.com>
parents:
195
diff
changeset
|
77 param = modifier(param) |
355eaae40b1f
Buildings now affect weapon range and accuracy.
Jeremy Thurgood <firxen@gmail.com>
parents:
195
diff
changeset
|
78 return param |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
79 |
84 | 80 def in_range(self, gameboard, wielder, target): |
81 """Can the lucky wielder hit the potentially unlucky target with this?""" | |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
82 return wielder.pos.dist(target.pos) <= self._get_parameter('RANGE', wielder) |
84 | 83 |
84 def hit(self, gameboard, wielder, target): | |
85 """Is the potentially unlucky target actually unlucky?""" | |
429
42777630956a
Add ammo to things serialized and deserialized.
Simon Cross <hodgestar@gmail.com>
parents:
423
diff
changeset
|
86 if self.ammunition is not None: |
413
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
87 if self.ammunition <= 0: |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
88 # Out of ammunition, so we don't get to shoot. |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
89 return |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
90 else: |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
91 self.ammunition -= 1 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
92 if hasattr(self, 'HIT_SOUND'): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
93 sound.play_sound(self.HIT_SOUND) |
202 | 94 if hasattr(self, 'ANIMATION'): |
380
1586eccdefe4
Ripped out legacy animation infrastructure in favour of layered sprites.
Jeremy Thurgood <firxen@gmail.com>
parents:
305
diff
changeset
|
95 self.ANIMATION(gameboard.tv, wielder) |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
96 roll = random.randint(1, 100) |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
97 base_hit = self._get_parameter('BASE_HIT', wielder) |
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
98 range_penalty = self._get_parameter('RANGE_PENALTY', wielder) |
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
99 return roll > (100-base_hit) + range_penalty*wielder.pos.dist(target.pos) |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
100 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
101 def place(self, animal): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
102 for eq in animal.equipment: |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
103 if is_weapon(eq): |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
104 return False |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
105 return True |
84 | 106 |
107 class Rifle(Weapon): | |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
108 TYPE = "GUN" |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
109 NAME = "Rifle" |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
110 BUY_PRICE = 100 |
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
111 SELL_PRICE = 75 |
413
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
112 AMMUNITION = 30 |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
113 |
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
114 RANGE = 3 |
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
115 BASE_HIT = 55 |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
116 RANGE_PENALTY = 15 |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
117 HIT_SOUND = "fire-rifle.ogg" |
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
118 |
146 | 119 CHICKEN_IMAGE_FILE = 'sprites/equip_rifle.png' |
120 | |
202 | 121 ANIMATION = animations.MuzzleFlash |
122 | |
413
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
123 class SniperRifle(Weapon): |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
124 TYPE = "GUN" |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
125 NAME = "Sniper Rifle" |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
126 BUY_PRICE = 150 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
127 SELL_PRICE = 100 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
128 AMMUNITION = 3 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
129 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
130 RANGE = 5 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
131 BASE_HIT = 80 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
132 RANGE_PENALTY = 10 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
133 HIT_SOUND = "fire-rifle.ogg" |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
134 |
430
db7bb20d2336
sniper rifle graphics
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
429
diff
changeset
|
135 CHICKEN_IMAGE_FILE = 'sprites/equip_sniper_rifle.png' |
413
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
136 |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
137 ANIMATION = animations.MuzzleFlash |
bdc4757e0497
Add Sniper Rifle and give guns limited ammunition.
Jeremy Thurgood <firxen@gmail.com>
parents:
408
diff
changeset
|
138 |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
139 class Knife(Weapon): |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
140 TYPE = "KNIFE" |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
141 NAME = "Knife" |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
142 BUY_PRICE = 25 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
143 SELL_PRICE = 15 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
144 |
120
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
145 RANGE = 1 |
5621f5074c8d
Added knives, increased rifle prices.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
146 BASE_HIT = 70 |
189
37af9e5dd292
Use tool with left button, cancel tool with right button.
Jeremy Thurgood <firxen@gmail.com>
parents:
174
diff
changeset
|
147 RANGE_PENALTY = 0 |
84 | 148 |
146 | 149 CHICKEN_IMAGE_FILE = 'sprites/equip_knife.png' |
150 | |
422
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
151 class Axe(Weapon): |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
152 TYPE = "AXE" |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
153 NAME = "Axe" |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
154 BUY_PRICE = 50 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
155 SELL_PRICE = 30 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
156 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
157 RANGE = 1 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
158 BASE_HIT = 25 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
159 RANGE_PENALTY = 0 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
160 |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
161 CHICKEN_IMAGE_FILE = 'sprites/equip_axe.png' |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
162 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
163 class Armour(Equipment): |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
164 IS_ARMOUR = True |
161
9b4213f6ea7f
improved equipment layers; unequip method on animal
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
158
diff
changeset
|
165 DRAW_LAYER = 5 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
166 |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
167 def __init__(self): |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
168 super(Armour, self).__init__() |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
169 self.hitpoints = self.STARTING_HITPOINTS |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
170 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
171 def place(self, animal): |
167
1d4d2202ef9f
one helmet and vest per chicken
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
161
diff
changeset
|
172 for eq in animal.equipment: |
1d4d2202ef9f
one helmet and vest per chicken
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
161
diff
changeset
|
173 if eq.NAME == self.NAME: |
1d4d2202ef9f
one helmet and vest per chicken
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
161
diff
changeset
|
174 return False |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
175 return True |
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
176 |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
177 def survive_damage(self): |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
178 self.hitpoints -= 1 |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
179 if self.hitpoints > 0: |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
180 self._sell_price = int(self._sell_price*self.hitpoints/float(self.hitpoints+1)) |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
181 return True |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
182 return False |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
183 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
184 class Helmet(Armour): |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
185 NAME = "Helmet" |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
186 BUY_PRICE = 25 |
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
187 SELL_PRICE = 15 |
250
048510e95812
made helmet biggerer
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
244
diff
changeset
|
188 DRAW_LAYER = 6 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
189 |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
190 STARTING_HITPOINTS = 1 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
191 |
244
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
192 CHICKEN_IMAGE_FILE = 'sprites/equip_helmet.png' |
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
193 UNDER_EYE = True |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
194 |
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
195 class Kevlar(Armour): |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
196 NAME = "Kevlar" |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
197 BUY_PRICE = 100 |
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
198 SELL_PRICE = 75 |
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
199 |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
200 STARTING_HITPOINTS = 2 |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
201 |
244
7024d48c41c2
weapon layering with wing / eye
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
210
diff
changeset
|
202 CHICKEN_IMAGE_FILE = 'sprites/equip_kevlar.png' |
158
baf857805867
armour works now
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
146
diff
changeset
|
203 |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
204 class Accoutrement(Equipment): |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
205 """Things which are not equipment, but are displayed in the same way""" |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
206 IS_EQUIPMENT = False |
200
67d10f7e0159
selected chickens are selected
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
198
diff
changeset
|
207 IS_ACCOUTREMENT = True |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
208 BUY_PRICE = 0 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
209 SELL_PRICE = 0 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
210 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
211 def place(self, animal): |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
212 for eq in animal.accoutrements: |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
213 if eq.NAME == self.NAME: |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
214 return False |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
215 return True |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
216 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
217 class Spotlight(Accoutrement): |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
218 NAME = "Spotlight" |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
219 CHICKEN_IMAGE_FILE = 'sprites/select_chkn.png' |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
220 DRAW_LAYER = -5 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
221 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
222 class Nest(Accoutrement): |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
223 NAME = "Nest" |
195
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
224 CHICKEN_IMAGE_FILE = 'sprites/nest.png' |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
225 DRAW_LAYER = 15 |
9d31cfc3afde
refactor of layers drawn on chicken, to allow for extended functionality
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
189
diff
changeset
|
226 |
210 | 227 class NestEgg(Accoutrement): |
305
32149b1d9fd2
Capitalised all equipment names.
Jeremy Thurgood <firxen@gmail.com>
parents:
250
diff
changeset
|
228 NAME = "Nestegg" |
210 | 229 CHICKEN_IMAGE_FILE = 'sprites/equip_egg.png' |
230 DRAW_LAYER = 14 | |
231 | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
232 def is_equipment(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
233 """Return true if obj is a build class.""" |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
234 return getattr(obj, "IS_EQUIPMENT", False) and hasattr(obj, "NAME") |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
235 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
236 def is_weapon(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
237 return is_equipment(obj) and getattr(obj, 'IS_WEAPON', False) |
84 | 238 |
174
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
239 def is_armour(obj): |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
240 return is_equipment(obj) and getattr(obj, 'IS_ARMOUR', False) |
ff168162974e
armour gets damaged
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
167
diff
changeset
|
241 |
200
67d10f7e0159
selected chickens are selected
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
198
diff
changeset
|
242 def is_accoutrement(obj): |
67d10f7e0159
selected chickens are selected
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
198
diff
changeset
|
243 return not getattr(obj, "IS_EQUIPMENT", False) and hasattr(obj, "NAME") and getattr(obj, 'IS_ACCOUTREMENT', False) |
67d10f7e0159
selected chickens are selected
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
198
diff
changeset
|
244 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
245 EQUIPMENT = [] |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
246 for name in dir(): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
247 obj = eval(name) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
248 try: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
249 if is_equipment(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
250 EQUIPMENT.append(obj) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
251 except TypeError: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
252 pass |
408
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
253 |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
254 |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
255 EQUIP_MAP = { # Map chicken level codes to equipment |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
256 1 : [], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
257 2 : [Helmet], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
258 3 : [Kevlar], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
259 4 : [Knife], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
260 5 : [Rifle], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
261 6 : [Kevlar, Helmet], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
262 7 : [Helmet, Knife], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
263 8 : [Kevlar, Knife], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
264 9 : [Kevlar, Helmet, Knife], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
265 10 : [Helmet, Rifle], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
266 11 : [Kevlar, Rifle], |
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
267 12 : [Kevlar, Helmet, Rifle], |
422
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
268 13 : [Axe], |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
269 14 : [Helmet, Axe], |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
270 15 : [Kevlar, Axe], |
ab4fc3fe0f96
chickens scatter; chop wood
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
415
diff
changeset
|
271 16 : [Kevlar, Helmet, Axe], |
408
02a6de5629d6
Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents:
380
diff
changeset
|
272 } |