Mercurial > rinkhals
annotate gamelib/equipment.py @ 118:2c76ed47fc44
Remove chicken respawn at day start. Handle eaten chickens in henhouses better
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 02 Sep 2009 20:28:03 +0000 |
parents | 4c2fbab20abe |
children | 5621f5074c8d |
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 |
84 | 5 |
6 class Equipment(object): | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
7 IS_EQUIPMENT = True |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
8 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
9 def __init__(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
10 self._buy_price = self.BUY_PRICE |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
11 self._sell_price = self.SELL_PRICE |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
12 self._name = self.NAME |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
13 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
14 def buy_price(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
15 return self._buy_price |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
16 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
17 def sell_price(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
18 return self._sell_price |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
19 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
20 def name(self): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
21 return self._name |
84 | 22 |
23 class Weapon(Equipment): | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
24 IS_WEAPON = True |
84 | 25 |
26 def in_range(self, gameboard, wielder, target): | |
27 """Can the lucky wielder hit the potentially unlucky target with this?""" | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
28 return wielder.pos.dist(target.pos) <= self.RANGE |
84 | 29 |
30 def hit(self, gameboard, wielder, target): | |
31 """Is the potentially unlucky target actually unlucky?""" | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
32 if hasattr(self, 'HIT_SOUND'): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
33 sound.play_sound(self.HIT_SOUND) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
34 roll = random.randint(1, 100) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
35 return roll > self.BASE_HIT + self.RANGE_MODIFIER*wielder.pos.dist(target.pos) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
36 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
37 def place(self, animal): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
38 for eq in animal.equipment: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
39 if self.NAME == eq.NAME: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
40 return False |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
41 return True |
84 | 42 |
43 class Rifle(Weapon): | |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
44 NAME = "rifle" |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
45 BUY_PRICE = 20 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
46 SELL_PRICE = 15 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
47 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
48 RANGE = 3 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
49 BASE_HIT = 50 |
114 | 50 RANGE_MODIFIER = 15 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
51 HIT_SOUND = "fire-rifle.ogg" |
84 | 52 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
53 def is_equipment(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
54 """Return true if obj is a build class.""" |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
55 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
|
56 |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
57 def is_weapon(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
58 return is_equipment(obj) and getattr(obj, 'IS_WEAPON', False) |
84 | 59 |
109
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
60 EQUIPMENT = [] |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
61 for name in dir(): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
62 obj = eval(name) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
63 try: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
64 if is_equipment(obj): |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
65 EQUIPMENT.append(obj) |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
66 except TypeError: |
48019afde338
Equipment purchasing and some toolbar tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
99
diff
changeset
|
67 pass |