Mercurial > rinkhals
comparison gamelib/animal.py @ 174:ff168162974e
armour gets damaged
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Thu, 03 Sep 2009 23:11:11 +0000 |
parents | 9ea53eb919cf |
children | 6854e706dcdf |
comparison
equal
deleted
inserted
replaced
173:b2eed9977e35 | 174:ff168162974e |
---|---|
28 else: | 28 else: |
29 self.pos = Position(tile_pos[0], tile_pos[1]) | 29 self.pos = Position(tile_pos[0], tile_pos[1]) |
30 self.equipment = [] | 30 self.equipment = [] |
31 self.abode = None | 31 self.abode = None |
32 self.facing = 'left' | 32 self.facing = 'left' |
33 self.lives = 1 | |
34 | 33 |
35 def loop(self, tv, _sprite): | 34 def loop(self, tv, _sprite): |
36 ppos = tv.tile_to_view(self.pos.to_tuple()) | 35 ppos = tv.tile_to_view(self.pos.to_tuple()) |
37 self.rect.x = ppos[0] | 36 self.rect.x = ppos[0] |
38 self.rect.y = ppos[1] | 37 self.rect.y = ppos[1] |
90 self.image_right.blit(eq_image_right, (0, 0)) | 89 self.image_right.blit(eq_image_right, (0, 0)) |
91 | 90 |
92 def weapons(self): | 91 def weapons(self): |
93 return [e for e in self.equipment if equipment.is_weapon(e)] | 92 return [e for e in self.equipment if equipment.is_weapon(e)] |
94 | 93 |
94 def armour(self): | |
95 return [e for e in self.equipment if equipment.is_armour(e)] | |
96 | |
95 def covers(self, tile_pos): | 97 def covers(self, tile_pos): |
96 return tile_pos[0] == self.pos.x and tile_pos[1] == self.pos.y | 98 return tile_pos[0] == self.pos.x and tile_pos[1] == self.pos.y |
97 | 99 |
98 def outside(self): | 100 def outside(self): |
99 return self.abode is None | 101 return self.abode is None |
102 | |
103 def survive_damage(self): | |
104 for a in self.armour(): | |
105 if not a.survive_damage(): | |
106 self.unequip(a) | |
107 return True | |
108 return False | |
100 | 109 |
101 class Chicken(Animal): | 110 class Chicken(Animal): |
102 """A chicken""" | 111 """A chicken""" |
103 | 112 |
104 EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE' | 113 EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE' |
289 return self.pos | 298 return self.pos |
290 return self._find_best_path_step(self.closest.pos, gameboard) | 299 return self._find_best_path_step(self.closest.pos, gameboard) |
291 | 300 |
292 def _catch_chicken(self, chicken, gameboard): | 301 def _catch_chicken(self, chicken, gameboard): |
293 """Catch a chicken""" | 302 """Catch a chicken""" |
294 chicken.lives -= 1 | 303 if not chicken.survive_damage(): |
295 if not chicken.lives > 0: | |
296 sound.play_sound("kill-chicken.ogg") | 304 sound.play_sound("kill-chicken.ogg") |
297 gameboard.remove_chicken(chicken) | 305 gameboard.remove_chicken(chicken) |
298 self.closest = None | 306 self.closest = None |
299 self.hunting = False | 307 self.hunting = False |
300 self.last_steps = [] # Forget history here | 308 self.last_steps = [] # Forget history here |